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 및
값을 함께 사용합니다. 다음 예제에서는 1.13을 제외한 모든 1.X 클라이언트 바이너리를 허용합니다.
requiredClients
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}'
클라이언트의 사용자 에이전트가 구성이 일치하지 않으면 오류가 발생합니다. 변경 요청이 일치하는지 확인하려면 허용 목록을 적용합니다. 규칙은 특정 동사에 매핑되므로 변경 요청을 금지하는 동시에 요청을 변경하지 않을 수 있습니다.