OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
5.2.2. vaulttenantsaを使用するための前提条件
-
OpenShift Data Foundation クラスターは
Ready状態である。 外部の鍵管理システム (KMS) で、以下を実行します。
- ポリシーが存在し、Vault のキー値のバックエンドパスが有効になっていることを確認します。詳細は、Enabling key value and policy in Vaultを参照してください。
- Vault サーバーで署名済みの証明書を使用していることを確認します。
以下のようにテナント namespace に以下の serviceaccount を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kubernetes の認証方法は、OpenShift Data Foundation が Vault を使用して認証し、開始する前に設定する必要があります。以下の手順では、OpenShift Data Foundation が Vault で認証できるように、
serviceAccount、ClusterRole、およびClusterRoleBindingを作成し、設定します。以下の YAML を Openshift クラスターに適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記で作成された serviceaccount (SA) に関連付けられたシークレット名を特定します。
oc -n openshift-storage get sa rbd-csi-vault-token-review -o jsonpath="{.secrets[*]['name']}"$ oc -n openshift-storage get sa rbd-csi-vault-token-review -o jsonpath="{.secrets[*]['name']}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットからトークンと CA 証明書を取得します。
oc get secret <secret associated with SA> -o jsonpath="{.data['token']}" | base64 --decode; echo oc get secret <secret associated with SA> -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo$ oc get secret <secret associated with SA> -o jsonpath="{.data['token']}" | base64 --decode; echo $ oc get secret <secret associated with SA> -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echoCopy to Clipboard Copied! Toggle word wrap Toggle overflow OCP クラスターエンドポイントを取得します。
oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}"$ oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の手順で収集した情報を使用して、以下に示すように Vault で kubernetes 認証方法を設定します。
vault auth enable kubernetes vault write auth/kubernetes/config token_reviewer_jwt=<SA token> kubernetes_host=<OCP cluster endpoint> kubernetes_ca_cert=<SA CA certificate>
$ vault auth enable kubernetes $ vault write auth/kubernetes/config token_reviewer_jwt=<SA token> kubernetes_host=<OCP cluster endpoint> kubernetes_ca_cert=<SA CA certificate>Copy to Clipboard Copied! Toggle word wrap Toggle overflow テナント namespace の Vault にロールを作成します。
vault write "auth/kubernetes/role/csi-kubernetes" bound_service_account_names="ceph-csi-vault-sa" bound_service_account_namespaces=<tenant_namespace> policies=<policy_name_in_vault>
$ vault write "auth/kubernetes/role/csi-kubernetes" bound_service_account_names="ceph-csi-vault-sa" bound_service_account_namespaces=<tenant_namespace> policies=<policy_name_in_vault>Copy to Clipboard Copied! Toggle word wrap Toggle overflow csi-kubernetesは、OpenShift Data Foundation が Vault を検索するデフォルトのロール名です。Openshift Data Foundation クラスターのテナント namespace のデフォルトのサービスアカウント名はceph-csi-vault-saです。これらのデフォルト値は、テナント namespace に ConfigMap を作成して上書きできます。デフォルト名の上書きに関する詳細は、テナント ConfigMap を使用した Vault 接続の詳細の上書き を参照してください。
PV 暗号化の
vaulttenantsaメソッドを使用する storageclass を作成するには、既存の ConfigMap を編集するか、Vault との接続を確立するのに必要なすべての情報を保持するcsi-kms-connection-detailsという名前の ConfigMap を作成する必要があります。以下の yaml のサンプルを使用して、
csi-kms-connection-detailConfigMap を更新または作成できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
encryptionKMSType: vault との認証にサービスアカウントを使用するには、vaulttenantsaに設定する必要があります。 -
vaultAddress: ポート番号のある vault サーバーのホスト名または IP アドレス。 -
vaultTLSServerName: (オプション) vault TLS サーバー名 -
vaultAuthPath: (オプション) Vault で kubernetes 認証メソッドが有効になっているパス。デフォルトのパスはkubernetesです。auth メソッドがkubernetes以外のパスで有効になっている場合は、この変数を"/v1/auth/<path>/login"として設定する必要があります。 -
vaultAuthNamespace: (オプション) kubernetes 認証メソッドが有効な Vault namespace -
vaultNamespace: (オプション) キーの保存に使用されるバックエンドパスが存在する Vault namespace -
vaultBackendPath: 暗号化キーが保存される Vault のバックエンドパス -
vaultCAFromSecret: Vault からの CA 証明書が含まれる OpenShift Data Foundation クラスターのシークレット -
vaultClientCertFromSecret: Vault からのクライアント証明書が含まれる OpenShift Data Foundation クラスターのシークレット -
vaultClientCertKeyFromSecret: Vault のクライアント秘密鍵を含む OpenShift Data Foundation クラスターのシークレット -
tenantSAName: (オプション) テナント namespace のサービスアカウント名。デフォルト値はceph-csi-vault-saです。別の名前を使用する場合は、この変数を適切に設定する必要があります。
-
次に、「PV 暗号化のストレージクラスを作成する手順」 に記載の手順を実行します。