第19章 クラウドプロバイダーの認証情報の管理

19.1. Cloud Credential Operator について

Cloud Credential Operator (CCO) は、クラウドプロバイダーの認証情報をカスタムリソース定義 (CRD) として管理します。CCO は CredentialsRequest カスタムリソース (CR) で同期し、OpenShift Container Platform コンポーネントが、クラスターの実行に必要な特定のパーミッションと共にクラウドプロバイダーの認証情報を要求できるようにします。

install-config.yaml ファイルで credentialsMode パラメーターに異なる値を設定すると、CCO は複数の異なるモードで動作するように設定できます。モードが指定されていない場合や、credentialsMode パラメーターが空の文字列 ("") に設定されている場合、CCO はデフォルトモードで動作します。

19.1.1. モード

install-config.yaml ファイルに credentialsMode パラメーターの異なる値を設定することで、CCO を mintpassthrough、または manual モードで動作するように設定できます。これらのオプションにより、CCO がクラウド認証情報を使用してクラスターで CredentialsRequest CR を処理し、CCO を組織のセキュリティー要件に対応するように設定する方法において透明性と柔軟性が提供されます。すべてのクラウドプロバイダーですべての CCO モードがサポートされている訳ではありません。

  • Mint: mint モードでは、CCO は提供される管理レベルのクラウド認証情報を使用して、必要となる特定のパーミッションのみでクラスター内のコンポーネントの新規の認証情報を作成します。
  • Passthrough: passthrough モードでは、CCO はクラウド認証情報を要求するコンポーネントに、指定されたクラウド認証情報を渡します。
  • Manual: manual モードでは、ユーザーは CCO の代わりにクラウド認証情報を管理します。

    • AWS Security Token Service による手動: 手動モードでは、AWS クラスターを設定して、Amazon Web Services Security Token Service (AWS STS) を使用できます。この設定では、CCO は異なるコンポーネントに一時的な認証情報を使用します。
    • GCP ワークロード ID を使用した手動: 手動モードでは、GCP ワークロード ID を使用するように GCP クラスターを設定できます。この設定では、CCO は異なるコンポーネントに一時的な認証情報を使用します。

表19.1 CCO モードのサポートマトリックス

クラウドプロバイダーMintpassthrough手動

Alibaba Cloud

  

X

Amazon Web Services (AWS)

X

X

X

Microsoft Azure

 

X [1]

X

Google Cloud Platform (GCP)

X

X

X

IBM Cloud

  

X

Nutanix

  

X

Red Hat OpenStack Platform (RHOSP)

 

X

 

Red Hat Virtualization (RHV)

 

X

 

VMware vSphere

 

X

 
  1. 手動モードは、Microsoft Azure Stack Hub でサポートされている唯一の CCO 設定です。

19.1.2. Cloud Credential Operator モードの決定

複数のモードでの CCO の使用をサポートするプラットフォームの場合、Web コンソールまたは CLI を使用して、CCO がどのモードを使用するように設定されているかを判断できます。

図19.1 CCO 設定の決定

クラスターに設定された CCO 認証情報モードの判断方法を示すデシジョンツリー

19.1.2.1. Web コンソールを使用した Cloud Credential Operator モードの判別

Cloud Credential Operator (CCO) がどのモードを使用するように設定されているかは、Web コンソールを使用して判別できます。

注記

複数の CCO モードをサポートするのは、Amazon Web Services (AWS)、グローバル Microsoft Azure、および Google Cloud Platform (GCP) クラスターのみです。

前提条件

  • クラスター管理者パーミッションを持つ OpenShift Container Platform アカウントにアクセスできる。

手順

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。
  2. AdministrationCluster Settings に移動します。
  3. Cluster Settings ページで、Configuration タブを選択します。
  4. Configuration resourceCloudCredential を選択します。
  5. CloudCredential details ページで、YAML タブを選択します。
  6. YAML ブロックで、spec.credentialsMode の値を確認します。次の値が可能ですが、すべてのプラットフォームですべてがサポートされているわけではありません。

    • '': CCO はデフォルトモードで動作しています。この設定では、CCO は、インストール中に提供されたクレデンシャルに応じて、ミントモードまたはパススルーモードで動作します。
    • Mint: CCO はミントモードで動作しています。
    • Passthrough: CCO はパススルーモードで動作しています。
    • Manual: CCO は手動モードで動作します。
    重要

    spec.credentialsMode''Mint、または Manual である AWS または GCP クラスターの特定の設定を特定するには、さらに調査する必要があります。

    AWS および GCP クラスターは、ルートシークレットが削除されたミントモードの使用をサポートします。

    手動モードを使用する AWS または GCP クラスターは、AWS Security Token Service (STS) または GCP Workload Identity を使用して、クラスターの外部からクラウド認証情報を作成および管理するように設定されている場合があります。クラスター Authentication オブジェクトを調べることで、クラスターがこの戦略を使用しているかどうかを判断できます。

  7. デフォルト ('') のみを使用する AWS または GCP クラスター: クラスターがミントモードまたはパススルーモードで動作しているかどうかを判断するには、クラスタールートシークレットのアノテーションを調べます。

    1. WorkloadsSecrets に移動し、クラウドプロバイダーのルートシークレットを探します。

      注記

      Project ドロップダウンが All Projects に設定されていることを確認します。

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

      AWS

      aws-creds

      GCP

      gcp-credentials

    2. クラスターが使用している CCO モードを表示するには、Annotations1 annotation をクリックし、value フィールドを確認します。以下の値が可能です。

      • Mint: CCO はミントモードで動作しています。
      • Passthrough: CCO はパススルーモードで動作しています。

      クラスターが mint モードを使用している場合、クラスターがルートシークレットなしで動作しているかどうかを判断することもできます。

  8. mint モードのみを使用する AWS または GCP クラスター: クラスターがルートシークレットなしで動作しているかどうかを判断するには、WorkloadsSecrets に移動し、クラウドプロバイダーのルートシークレットを探します。

    注記

    Project ドロップダウンが All Projects に設定されていることを確認します。

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

    AWS

    aws-creds

    GCP

    gcp-credentials

    • これらの値のいずれかが表示される場合、クラスターはルートシークレットが存在するミントモードまたはパススルーモードを使用しています。
    • これらの値が表示されない場合、クラスターはルートシークレットが削除されたミントモードで CCO を使用しています。
  9. 手動モードのみを使用する AWS または GCP クラスター: クラスターがクラスターの外部からクラウド認証情報を作成および管理するように設定されているかどうかを判断するには、クラスター Authentication オブジェクトの YAML 値を確認する必要があります。

    1. AdministrationCluster Settings に移動します。
    2. Cluster Settings ページで、Configuration タブを選択します。
    3. Configuration resourceAuthentication を選択します。
    4. Authentication details ページで、YAML タブを選択します。
    5. YAML ブロックで、.spec.serviceAccountIssuer パラメーターの値を確認します。

      • クラウドプロバイダーに関連付けられている URL を含む値は、CCO が AWS STS または GCP Workload Identity で手動モードを使用して、クラスターの外部からクラウド認証情報を作成および管理していることを示します。これらのクラスターは、ccoctl ユーティリティーを使用して設定されます。
      • 空の値 ('') は、クラスターが手動モードで CCO を使用しているが、ccoctl ユーティリティーを使用して設定されていないことを示します。

19.1.2.2. CLI を使用した Cloud Credential Operator モードの判別

CLI を使用して、Cloud Credential Operator (CCO) が使用するように設定されているモードを判別できます。

注記

複数の CCO モードをサポートするのは、Amazon Web Services (AWS)、グローバル Microsoft Azure、および Google Cloud Platform (GCP) クラスターのみです。

前提条件

  • クラスター管理者パーミッションを持つ OpenShift Container Platform アカウントにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. cluster-admin ロールを持つユーザーとしてクラスターの oc にログインします。
  2. CCO が使用するように設定されているモードを確認するには、次のコマンドを入力します。

    $ oc get cloudcredentials cluster \
      -o=jsonpath={.spec.credentialsMode}

    すべてのプラットフォームですべてがサポートされているわけではありませんが、次の出力値が可能です。

    • '': CCO はデフォルトモードで動作しています。この設定では、CCO は、インストール中に提供されたクレデンシャルに応じて、ミントモードまたはパススルーモードで動作します。
    • Mint: CCO はミントモードで動作しています。
    • Passthrough: CCO はパススルーモードで動作しています。
    • Manual: CCO は手動モードで動作します。
    重要

    spec.credentialsMode''Mint、または Manual である AWS または GCP クラスターの特定の設定を特定するには、さらに調査する必要があります。

    AWS および GCP クラスターは、ルートシークレットが削除されたミントモードの使用をサポートします。

    手動モードを使用する AWS または GCP クラスターは、AWS Security Token Service (STS) または GCP Workload Identity を使用して、クラスターの外部からクラウド認証情報を作成および管理するように設定されている場合があります。クラスター Authentication オブジェクトを調べることで、クラスターがこの戦略を使用しているかどうかを判断できます。

  3. デフォルト ('') のみを使用する AWS または GCP クラスター: クラスターがミントモードまたはパススルーモードで動作しているかどうかを判断するには、次のコマンドを実行します。

    $ oc get secret <secret_name> \
      -n kube-system \
      -o jsonpath \
      --template '{ .metadata.annotations }'

    <secret_name> は、AWS の場合は aws-creds、GCP の場合は gcp-credentials です。

    このコマンドは、クラスタールートシークレットオブジェクトの .metadata.annotations パラメーターの値を表示します。以下の出力値を使用できます。

    • Mint: CCO はミントモードで動作しています。
    • Passthrough: CCO はパススルーモードで動作しています。

    クラスターが mint モードを使用している場合、クラスターがルートシークレットなしで動作しているかどうかを判断することもできます。

  4. mint モードのみを使用する AWS または GCP クラスター: クラスターがルートシークレットなしで動作しているかどうかを判断するには、次のコマンドを実行します。

    $ oc get secret <secret_name> \
      -n=kube-system

    <secret_name> は、AWS の場合は aws-creds、GCP の場合は gcp-credentials です。

    ルートシークレットが存在する場合、このコマンドの出力はシークレットに関する情報を返します。エラーは、ルートシークレットがクラスターに存在しないことを示します。

  5. 手動モードのみを使用する AWS または GCP クラスター: クラスターがクラスターの外部からクラウド認証情報を作成および管理するように設定されているかどうかを確認するには、次のコマンドを実行します。

    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'

    このコマンドは、クラスター Authentication オブジェクトの .spec.serviceAccountIssuer パラメーターの値を表示します。

    • クラウドプロバイダーに関連付けられている URL の出力は、CCO が AWS STS または GCP Workload Identity で手動モードを使用して、クラスターの外部からクラウド認証情報を作成および管理していることを示しています。これらのクラスターは、ccoctl ユーティリティーを使用して設定されます。
    • 空の出力は、クラスターが手動モードで CCO を使用しているが、ccoctl ユーティリティーを使用して設定されていないことを示します。

19.1.3. デフォルト動作

複数のモードがサポートされるプラットフォーム (AWS、Azure、および GCP) の場合、CCO がデフォルトモードで動作する際に、これは指定される認証情報を動的にチェックし、CredentialsRequest CR を処理するのに十分なモードを判別します。

デフォルトで、CCO は推奨される操作モードの mint モードに十分な認証情報があるかどうかを判別し、これらの認証情報を使用してクラスター内のコンポーネントの適切な認証情報を作成します。mint モードに十分な認証情報がない場合は、passthrough モードに十分な認証情報があるかどうかを判別します。passthrough モードに十分な認証情報がない場合、CCO は CredentialsRequest CR を適切に処理できません。

インストール時に提供された認証情報が不十分であると判別される場合、インストールは失敗します。AWS では、インストーラーはプロセスの早期の段階で失敗し、どの必須パーミッションが欠落しているかを示します。他のプロバイダーは、エラーが発生するまでエラーの原因についての具体的な情報を提供しない場合があります。

認証情報が正常なインストールの後に変更され、CCO が新規の認証情報が不十分であると判別する場合に、CCO は新規の CredentialsRequest CR に条件を追加し、認証情報が不十分であるためにそれらを処理できないことを示唆します。

不十分な認証情報についての問題を解決するために、適切なパーミッションで認証情報を指定します。エラーがインストール時に発生した場合は、再度インストールを試行します。新規の CredentialsRequest CR 関連の問題については、CCO が再び CR の処理を試行するのを待機します。別の方法として、AWSAzure、および GCP の IAM を手動で作成できます。

19.1.4. 関連情報