OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
2.3. Kubernetes 인증 방법을 사용하여 KMS로 클러스터 전체 암호화 활성화
KMS(Key Management System)를 사용하여 클러스터 전체 암호화에 대한 Kubernetes 인증 방법을 활성화할 수 있습니다.
사전 요구 사항
- Vault에 대한 관리자 액세스.
- 유효한 Red Hat OpenShift Data Foundation Advanced 서브스크립션. 자세한 내용은 OpenShift Data Foundation 서브스크립션에 대한 지식베이스 문서 를 참조하십시오.
- OpenShift Data Foundation 운영자는 Operator Hub에서 설치해야 합니다.
나중에 변경할 수 없으므로 이름 지정 규칙을 따르는 백엔드
경로로고유한 경로 이름을 선택합니다.참고OpenShift Data Foundation 4.10에서 Kubernetes 인증 방법에서는 Vault 네임스페이스를 사용할 수 없습니다.
절차
서비스 계정을 생성합니다.
oc -n openshift-storage create serviceaccount <serviceaccount_name>
$ oc -n openshift-storage create serviceaccount <serviceaccount_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서 <
;serviceaccount_name>은 서비스 계정의 이름을 지정합니다.예를 들어 다음과 같습니다.
oc -n openshift-storage create serviceaccount odf-vault-auth
$ oc -n openshift-storage create serviceaccount odf-vault-authCopy to Clipboard Copied! Toggle word wrap Toggle overflow clusterrolebindings및 clusterroles를생성합니다.oc -n openshift-storage create clusterrolebinding vault-tokenreview-binding --clusterrole=system:auth-delegator --serviceaccount=openshift-storage:_<serviceaccount_name>_
$ oc -n openshift-storage create clusterrolebinding vault-tokenreview-binding --clusterrole=system:auth-delegator --serviceaccount=openshift-storage:_<serviceaccount_name>_Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어 다음과 같습니다.
oc -n openshift-storage create clusterrolebinding vault-tokenreview-binding --clusterrole=system:auth-delegator --serviceaccount=openshift-storage:odf-vault-auth
$ oc -n openshift-storage create clusterrolebinding vault-tokenreview-binding --clusterrole=system:auth-delegator --serviceaccount=openshift-storage:odf-vault-authCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform 버전에 따라 다음 중 하나를 수행합니다.
OpenShift Container Platform 4.10의 경우:
위에서 생성한 serviceaccount(SA)와 연결된 시크릿 이름을 식별합니다.
VAULT_SA_SECRET_NAME=$(oc -n openshift-storage get sa <SA_NAME> -o jsonpath="{.secrets[*]['name']}") | grep -o "[^[:space:]]*-token-[^[:space:]]*"$ VAULT_SA_SECRET_NAME=$(oc -n openshift-storage get sa <SA_NAME> -o jsonpath="{.secrets[*]['name']}") | grep -o "[^[:space:]]*-token-[^[:space:]]*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어 다음과 같습니다.
VAULT_SA_SECRET_NAME=$(oc -n openshift-storage get sa odf-vault-auth -o jsonpath="{.secrets[*]['name']}" | grep -o "[^[:space:]]*-token-[^[:space:]]*")$ VAULT_SA_SECRET_NAME=$(oc -n openshift-storage get sa odf-vault-auth -o jsonpath="{.secrets[*]['name']}" | grep -o "[^[:space:]]*-token-[^[:space:]]*")Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Container Platform 4.11의 경우:
serviceaccount토큰 및 CA 인증서에 대한 시크릿을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서 &
lt;serviceaccount_name>은 이전 단계에서 생성한 서비스 계정입니다.VAULT_SA_SECRET_NAME=odf-vault-auth-token
$ VAULT_SA_SECRET_NAME=odf-vault-auth-tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow
시크릿에서 토큰 및 CA 인증서를 가져옵니다.
SA_JWT_TOKEN=$(oc -n openshift-storage get secret "$VAULT_SA_SECRET_NAME" -o jsonpath="{.data.token}" | base64 --decode; echo) SA_CA_CRT=$(oc -n openshift-storage get secret "$VAULT_SA_SECRET_NAME" -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo)$ SA_JWT_TOKEN=$(oc -n openshift-storage get secret "$VAULT_SA_SECRET_NAME" -o jsonpath="{.data.token}" | base64 --decode; echo) $ SA_CA_CRT=$(oc -n openshift-storage get secret "$VAULT_SA_SECRET_NAME" -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo)Copy to Clipboard Copied! Toggle word wrap Toggle overflow OCP 클러스터 끝점을 검색합니다.
OCP_HOST=$(oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}")$ OCP_HOST=$(oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 계정 발행자를 가져옵니다.
oc proxy & proxy_pid=$! issuer="$( curl --silent http://127.0.0.1:8001/.well-known/openid-configuration | jq -r .issuer)" kill $proxy_pid
$ oc proxy & $ proxy_pid=$! $ issuer="$( curl --silent http://127.0.0.1:8001/.well-known/openid-configuration | jq -r .issuer)" $ kill $proxy_pidCopy to Clipboard Copied! Toggle word wrap Toggle overflow 위의 단계에서 수집된 정보를 사용하여 다음과 같이 Vault에서 Kubernetes 인증 방법을 설정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요issuer가 비어 있을 때 Vault에서 Kubernetes 인증 방법을 구성하려면 다음을 수행합니다.
vault write auth/kubernetes/config \ token_reviewer_jwt="$SA_JWT_TOKEN" \ kubernetes_host="$OCP_HOST" \ kubernetes_ca_cert="$SA_CA_CRT"$ vault write auth/kubernetes/config \ token_reviewer_jwt="$SA_JWT_TOKEN" \ kubernetes_host="$OCP_HOST" \ kubernetes_ca_cert="$SA_CA_CRT"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vault에서 KV(키/값) 백엔드 경로를 활성화합니다.
Vault KV 시크릿 엔진 API의 경우 버전 1입니다.
vault secrets enable -path=odf kv
$ vault secrets enable -path=odf kvCopy to Clipboard Copied! Toggle word wrap Toggle overflow Vault KV 시크릿 엔진 API의 경우 버전 2입니다.
vault secrets enable -path=odf kv-v2
$ vault secrets enable -path=odf kv-v2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시크릿에서 쓰기 또는 삭제 작업을 수행하도록 사용자를 제한하는 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 역할을 생성합니다.
vault write auth/kubernetes/role/odf-rook-ceph-op \ bound_service_account_names=rook-ceph-system,rook-ceph-osd,noobaa \ bound_service_account_namespaces=openshift-storage \ policies=odf \ ttl=1440h$ vault write auth/kubernetes/role/odf-rook-ceph-op \ bound_service_account_names=rook-ceph-system,rook-ceph-osd,noobaa \ bound_service_account_namespaces=openshift-storage \ policies=odf \ ttl=1440hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 시스템을 생성하는 동안 KMS 연결 세부 정보를 구성하는 동안
odf-rook-ceph-op역할이 사용됩니다.vault write auth/kubernetes/role/odf-rook-ceph-osd \ bound_service_account_names=rook-ceph-osd \ bound_service_account_namespaces=openshift-storage \ policies=odf \ ttl=1440h$ vault write auth/kubernetes/role/odf-rook-ceph-osd \ bound_service_account_names=rook-ceph-osd \ bound_service_account_namespaces=openshift-storage \ policies=odf \ ttl=1440hCopy to Clipboard Copied! Toggle word wrap Toggle overflow