19.2. mint モードの Cloud Credential Operator


mint モードは、OpenShift Container Platform をサポートするプラットフォーム上の OpenShift Container Platform のデフォルトの Cloud Credential Operator (CCO) クレデンシャルモードです。Mint モードは、Amazon Web Services (AWS) および Google Cloud Platform (GCP) クラスターをサポートします。

19.2.1. mint モードの認証情報管理

CCO を mint モードで使用するクラスターの場合、管理者レベルの認証情報は kube-system namespace に保存されます。CCO は、admin 認証情報を使用してクラスター内の CredentialsRequest オブジェクトを処理し、制限されたアクセス許可を持つコンポーネントのユーザーを作成します。

mint モードでは、各クラスターコンポーネントには、必要な特定のアクセス許可のみが与えられます。mint モードでクラウド認証情報を自動的に継続的に調整することで、アップグレードなどの追加の認証情報またはパーミッションを必要とするアクションを続行できます。

注記

デフォルトでは、mint モードでは、admin 認証情報をクラスターの kube-system namespace に保存する必要があります。このアプローチが組織のセキュリティー要件を満たさない場合は、クラスターのインストール後に認証情報を削除 できます。

19.2.1.1. mint モードのパーミッション要件

mint モードで CCO を使用する場合、指定する認証情報が OpenShift Container Platform を実行し、インストールしているクラウドの各種要件を満たしていることを確認してください。指定される認証情報が mint モードで不十分な場合、CCO は IAM ユーザーを作成できません。

Amazon Web Services (AWS) の mint モードに指定する認証情報には、次の権限が必要です。

例19.1 必要な AWS パーミッション

  • iam:CreateAccessKey
  • iam:CreateUser
  • iam:DeleteAccessKey
  • iam:DeleteUser
  • iam:DeleteUserPolicy
  • iam:GetUser
  • iam:GetUserPolicy
  • iam:ListAccessKeys
  • iam:PutUserPolicy
  • iam:TagUser
  • iam:SimulatePrincipalPolicy

Google Cloud Platform (GCP) の mint モードに指定する認証情報には、次の権限が必要です。

例19.2 必要な GCP パーミッション

  • resourcemanager.projects.get
  • serviceusage.services.list
  • iam.serviceAccountKeys.create
  • iam.serviceAccountKeys.delete
  • iam.serviceAccounts.create
  • iam.serviceAccounts.delete
  • iam.serviceAccounts.get
  • iam.roles.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

19.2.1.2. 管理者の認証情報のルートシークレット形式

各クラウドプロバイダーは、kube-system namespace の認証情報ルートシークレットを使用します。これは、すべての認証情報要求を満たし、それぞれのシークレットを作成するために使用されます。これは、mint モード で新規の認証情報を作成するか、passthrough モード で認証情報 root シークレットをコピーして実行します。

シークレットの形式はクラウドごとに異なり、それぞれの CredentialsRequest シークレットにも使用されます。

Amazon Web Services (AWS) シークレット形式

apiVersion: v1
kind: Secret
metadata:
  namespace: kube-system
  name: aws-creds
stringData:
  aws_access_key_id: <base64-encoded_access_key_id>
  aws_secret_access_key: <base64-encoded_secret_access_key>

Google Cloud Platform (GCP) シークレット形式

apiVersion: v1
kind: Secret
metadata:
  namespace: kube-system
  name: gcp-credentials
stringData:
  service_account.json: <base64-encoded_service_account>

19.2.2. クラウドプロバイダーの認証情報の維持

クラウドプロバイダーの認証情報が何らかの理由で変更される場合、クラウドプロバイダーの認証情報の管理に Cloud Credential Operator (CCO) が使用するシークレットを手動で更新する必要があります。

クラウド認証情報をローテーションするプロセスは、CCO を使用するように設定されているモードによって変わります。mint モードを使用しているクラスターの認証情報をローテーションした後に、削除された認証情報で作成されたコンポーネントの認証情報は手動で削除する必要があります。

前提条件

  • クラスターは、使用している CCO モードでのクラウド認証情報の手動ローテーションをサポートするプラットフォームにインストールされている。

    • mint モードについては、Amazon Web Services (AWS) および Google Cloud Platform (GCP) がサポートされます。
  • クラウドプロバイダーとのインターフェイスに使用される認証情報を変更している。
  • 新規認証情報には、モードの CCO がクラスターで使用されるように設定するのに十分なパーミッションがある。

手順

  1. Web コンソールの Administrator パースペクティブで、Workloads Secrets に移動します。
  2. Secrets ページの表で、クラウドプロバイダーのルートシークレットを見つけます。

    プラットフォームシークレット名

    AWS

    aws-creds

    GCP

    gcp-credentials

  3. シークレットと同じ行にある Options メニュー kebab をクリックし、Edit Secret を選択します。
  4. Value フィールドの内容を記録します。この情報を使用して、認証情報の更新後に値が異なることを確認できます。
  5. Value フィールドのテキストをクラウドプロバイダーの新規の認証情報で更新し、Save をクリックします。
  6. 個々の CredentialsRequest オブジェクトによって参照される各コンポーネントシークレットを削除します。

    1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform CLI にログインします。
    2. 参照されたすべてのコンポーネントシークレットの名前および namespace を取得します。

      $ oc -n openshift-cloud-credential-operator get CredentialsRequest \
        -o json | jq -r '.items[] | select (.spec.providerSpec.kind=="<provider_spec>") | .spec.secretRef'

      ここで、<provider_spec> はクラウドプロバイダーの対応する値になります。

      • AWS: AWSProviderSpec
      • GCP: GCPProviderSpec

      AWS の部分的なサンプル出力

      {
        "name": "ebs-cloud-credentials",
        "namespace": "openshift-cluster-csi-drivers"
      }
      {
        "name": "cloud-credential-operator-iam-ro-creds",
        "namespace": "openshift-cloud-credential-operator"
      }

    3. 参照されるコンポーネントの各シークレットを削除します。

      $ oc delete secret <secret_name> \1
        -n <secret_namespace> 2
      1
      シークレットの名前を指定します。
      2
      シークレットを含む namespace を指定します。

      AWS シークレットの削除例

      $ oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers

      プロバイダーコンソールから認証情報を手動で削除する必要はありません。参照されるコンポーネントのシークレットを削除すると、CCO はプラットフォームから既存の認証情報を削除し、新規の認証情報を作成します。

検証

認証情報が変更されたことを確認するには、以下を実行します。

  1. Web コンソールの Administrator パースペクティブで、Workloads Secrets に移動します。
  2. Value フィールドの内容が変更されていることを確認します。

19.2.3. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.