13.7. 사용자 에이전트와 CLI 버전 불일치 방지


OpenShift Container Platform은 애플리케이션 개발자의 CLI가 OpenShift Container Platform API에 액세스하지 못하도록 하는 데 사용할 수 있는 사용자 에이전트를 구현합니다.

OpenShift Container Platform CLI의 사용자 에이전트는 OpenShift Container Platform 내의 값 집합으로 구성됩니다.

<command>/<version>+<git_commit> (<platform>/<architecture>) <client>/<git_commit>

예를 들어 다음과 같은 경우를 예로 들 수 있습니다.

  • <command> = oc
  • <version> = 클라이언트 버전입니다. 예: v3.3.0 /api의 쿠버네티스 API에 대한 요청은 쿠버네티스 버전을 수신하고, /oapi의 OpenShift Container Platform API에 대한 요청은 OpenShift Container Platform 버전(oc version에 따라 지정됨)을 수신합니다.
  • <platform> = linux
  • <architecture> = amd64
  • <client> = /api의 쿠버네티스 API에 대한 요청인지 아니면 /oapi의 OpenShift Container Platform API에 대한 요청인지에 따라 openshift 또는 kubernetes
  • <git_commit> = 클라이언트 버전의 Git 커밋(예: f034127)

사용자 에이전트는 다음과 같습니다.

oc/v3.3.0+f034127 (linux/amd64) openshift/f034127

마스터 구성 파일 /etc/origin/master/master-config.yaml 에서 사용자 에이전트를 구성해야 합니다. 구성을 적용하려면 API 서버를 다시 시작하십시오.

$ /usr/local/bin/master-restart api

OpenShift Container Platform 관리자는 마스터 구성의 userAgentMatching 구성 설정을 사용하여 클라이언트가 API에 액세스하지 못하도록 할 수 있습니다. 따라서 클라이언트가 특정 라이브러리 또는 바이너리를 사용하는 경우 API에 액세스할 수 없게 됩니다.

다음 사용자 에이전트 예제에서는 Kubernetes 1.2 클라이언트 바이너리, OpenShift Origin 1.1.3 바이너리 및 POST 및 PUT httpVerbs 를 거부합니다.

policyConfig:
  userAgentMatchingConfig:
    defaultRejectionMessage: "Your client is too old.  Go to https://example.org to update it."
    deniedClients:
    - regex: '\w+/v(?:(?:1\.1\.1)|(?:1\.0\.1)) \(.+/.+\) openshift/\w{7}'
    - regex: '\w+/v(?:1\.1\.3) \(.+/.+\) openshift/\w{7}'
      httpVerbs:
      - POST
      - PUT
    - regex: '\w+/v1\.2\.0 \(.+/.+\) kubernetes/\w{7}'
      httpVerbs:
      - POST
      - PUT
    requiredClients: null

관리자는 예상 클라이언트와 정확히 일치하지 않는 클라이언트를 거부할 수도 있습니다.

policyConfig:
  userAgentMatchingConfig:
    defaultRejectionMessage: "Your client is too old.  Go to https://example.org to update it."
    deniedClients: []
    requiredClients:
    - regex: '\w+/v1\.1\.3 \(.+/.+\) openshift/\w{7}'
    - regex: '\w+/v1\.2\.0 \(.+/.+\) kubernetes/\w{7}'
      httpVerbs:
      - POST
      - PUT

허용된 클라이언트 집합에 포함되는 클라이언트를 거부하려면 deniedClients 및 requiredClients 값을 함께 사용합니다. 다음 예제에서는 1.13을 제외한 모든 1.X 클라이언트 바이너리를 허용합니다.

policyConfig:
  userAgentMatchingConfig:
    defaultRejectionMessage: "Your client is too old.  Go to https://example.org to update it."
    deniedClients:
    - regex: '\w+/v1\.13.0\+\w{7} \(.+/.+\) openshift/\w{7}'
    - regex: '\w+/v1\.13.0\+\w{7} \(.+/.+\) kubernetes/\w{7}'
    requiredClients:
    - regex: '\w+/v1\.[1-9][1-9].[0-9]\+\w{7} \(.+/.+\) openshift/\w{7}'
    - regex: '\w+/v1\.[1-9][1-9].[0-9]\+\w{7} \(.+/.+\) kubernetes/\w{7}'
참고

클라이언트의 사용자 에이전트가 구성이 일치하지 않으면 오류가 발생합니다. 변경 요청이 일치하는지 확인하려면 허용 목록을 적용합니다. 규칙은 특정 동사에 매핑되므로 변경 요청을 금지하는 동시에 요청을 변경하지 않을 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.