2.3. Kubernetes 認証方式を使用した KMS でのクラスター全体の暗号化の有効化


キー管理システム (KMS) を使用して、クラスター全体の暗号化に対して Kubernetes 認証方式を有効にできます。

前提条件

  • Vault への管理者アクセス。
  • 有効な Red Hat OpenShift Data Foundation Advanced サブスクリプション詳細については、OpenShift Data Foundation サブスクリプションに関するナレッジベースの記事 を参照してください。
  • OpenShift Data Foundation Operator は Operator Hub からインストールする必要があります。
  • 後に変更することはできないため、命名規則に基づいてバックエンド path として一意のパス名を選択します。

    注記

    Vault namespace の使用は、OpenShift Data Foundation 4.10 の Kubernetes 認証方式ではサポートされていません

手順

  1. サービスアカウントを作成します。

    $ oc -n openshift-storage create serviceaccount <serviceaccount_name>

    ここで、<serviceaccount_name> はサービスアカウントの名前を指定します。

    以下に例を示します。

    $ oc -n openshift-storage create serviceaccount odf-vault-auth
  2. clusterrolebindingsclusterroles を作成します。

    $ 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
  3. 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 odf-vault-auth -o jsonpath="{.secrets[*]['name']}" | grep -o "[^[:space:]]*-token-[^[:space:]]*")
    • OpenShift Container Platform 4.11 の場合:

      • 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

        ここで、<serviceaccount_name> は、前の手順で作成したサービスアカウントです。

        $ VAULT_SA_SECRET_NAME=odf-vault-auth-token
  4. シークレットからトークンと 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)
  5. OCP クラスターエンドポイントを取得します。

    $ OCP_HOST=$(oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}")
  6. サービスアカウントの発行者を取得します。

    $ oc proxy &
    $ proxy_pid=$!
    $ issuer="$( curl --silent http://127.0.0.1:8001/.well-known/openid-configuration | jq -r .issuer)"
    $ kill $proxy_pid
  7. 上記の手順で収集した情報を使用して、以下に示すように 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"
    重要

    発行者が空の場合に Vault で Kubernetes 認証方法を設定するには、以下を行います。

    $ vault write auth/kubernetes/config \
              token_reviewer_jwt="$SA_JWT_TOKEN" \
              kubernetes_host="$OCP_HOST" \
              kubernetes_ca_cert="$SA_CA_CRT"
  8. Vault で Key/Value (KV) バックエンドパスを有効にします。

    Vault KV シークレットエンジン API の場合は、バージョン 1 です。

    $ vault secrets enable -path=odf kv

    Vault KV シークレットエンジン API の場合は、バージョン 2 です。

    $ vault secrets enable -path=odf kv-v2
  9. シークレットに対して書き込み操作または削除操作を実行するようにユーザーを制限するポリシーを作成します。

    echo '
    path "odf/*" {
      capabilities = ["create", "read", "update", "delete", "list"]
    }
    path "sys/mounts" {
    capabilities = ["read"]
    }'| vault policy write odf -
  10. ロールを作成します。

    $ 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

    ロール odf-rook-ceph-op は、後でストレージシステムの作成中に KMS 接続の詳細を設定するときに使用されます。

    $ 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
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.