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는 Operator Hub에서 설치해야 합니다.
이름 지정 규칙을 신중하게 따르는 백엔드
경로로
고유한 경로 이름을 선택합니다. 나중에 이 경로 이름을 변경할 수 없습니다.참고OpenShift Data Foundation 4.11에서 Kubernetes 인증 방법으로 Vault 네임스페이스의 사용은 지원되지 않습니다.
절차
서비스 계정을 생성합니다.
$ oc -n openshift-storage create serviceaccount <serviceaccount_name>
여기서 &
lt;serviceaccount_name&
gt;은 서비스 계정의 이름을 지정합니다.예를 들어 다음과 같습니다.
$ oc -n openshift-storage create serviceaccount odf-vault-auth
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:odf-vault-auth
serviceaccount
토큰 및 CA 인증서에 대한 시크릿을 생성합니다.$ cat <<EOF | oc create -f - apiVersion: v1 kind: Secret metadata: name: odf-vault-auth-token namespace: openshift-storage annotations: kubernetes.io/service-account.name: <serviceaccount_name> type: kubernetes.io/service-account-token data: {} EOF
여기서 &
lt;serviceaccount_name
>은 이전 단계에서 생성한 서비스 계정입니다.시크릿에서 토큰 및 CA 인증서를 가져옵니다.
$ SA_JWT_TOKEN=$(oc -n openshift-storage get secret odf-vault-auth-token -o jsonpath="{.data['token']}" | base64 --decode; echo) $ SA_CA_CRT=$(oc -n openshift-storage get secret odf-vault-auth-token -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo)
OCP 클러스터 끝점을 검색합니다.
$ OCP_HOST=$(oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}")
서비스 계정 발행자를 가져옵니다.
$ oc proxy & $ proxy_pid=$! $ issuer="$( curl --silent http://127.0.0.1:8001/.well-known/openid-configuration | jq -r .issuer)" $ kill $proxy_pid
이전 단계에서 수집한 정보를 사용하여 Vault에서 Kubernetes 인증 방법을 설정합니다.
$ vault auth enable kubernetes
$ vault write auth/kubernetes/config \ token_reviewer_jwt="$SA_JWT_TOKEN" \ kubernetes_host="$OCP_HOST" \ kubernetes_ca_cert="$SA_CA_CRT" \ issuer="$issuer"
중요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에서 KV(Key/Value) 백엔드 경로를 활성화합니다.
Vault KV 시크릿 엔진 API의 경우 버전 1:
$ vault secrets enable -path=odf kv
Vault KV 시크릿 엔진 API의 경우 버전 2:
$ vault secrets enable -path=odf kv-v2
시크릿에서
쓰기
또는삭제
작업을 수행하도록 사용자를 제한하는 정책을 생성합니다.echo ' path "odf/*" { capabilities = ["create", "read", "update", "delete", "list"] } path "sys/mounts" { capabilities = ["read"] }'| vault policy write odf -
역할을 생성합니다.
$ 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
스토리지 시스템을 생성하는 동안 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