IAM信頼済みプロファイルによるリソースの認可
仮想プライベートクラウド クラシック・インフラストラクチャー Satellite
信頼されたプロファイルを使用して、リソースへのアクセスまたはリソースのアクセスを設定する方法について説明します。
ibmcloud ks cluster master refresh コマンドを実行して、IAM トラステッド・プロファイルを有効にすることができます。
- IAM で
- 最初に、IAM トラステッド・プロファイルを作成します。 次に、クラスターでの Kubernetes 名前空間やサービス・アカウントなど、クラスターと突き合わせる条件を選択して、トラステッド・プロファイルを IBM Cloud Kubernetes Service コンピュート・リソースにリンクします。 最後に、アプリで使用する IBM Cloud サービスに対するアクセス・ポリシーを割り当てます。
- クラスターで
- Kubernetes サービスアカウントトークン使用量の予測 を利用することで、リンクされたクラスターの Kubernetes 名前空間 で実行され、そのネームスペースのアカウントを使用するアプリは、 アカウント公開鍵を交換して、 IBM Cloud のIAMアクセストークンを取得することができます。 アプリは、このアクセス・トークンを使用して、データベース、IBM Cloud、VPC インフラストラクチャーなど、Watson サービスへの API 要求を認証できます。 トラステッド・プロファイルのアクセス・ポリシーを介して、トークンによりアプリが実行できるアクションを制御します。
IAM トラステッドプロファイルの作成
アカウントに信頼済みプロファイルを作成するには、IAMドキュメントの 信頼済みプロファイルの作成を 参照してください。 信頼済みプロファイルを作成するには、アカウント所有者でなければならないことに注意してください。 さらに、以下のアクセス・ロールが必要である。
- すべてのアカウント管理サービスにおける管理者ロール。
- IAM Identity サービスに対する管理者役割。 詳しくは、IAM Identity サービスを参照してください。
- 特定のリソースとコンポーネントに必要な追加の役割。
クラスタのデフォルトの信頼済みプロファイルを設定する
単一のクラスタに信頼済みプロファイルを設定するには、 ibmcloud ks experimental trusted-profile set コマンドを 実行します。
リソース・グループ内のすべてのクラスタに同じ信頼済みプロファイルを使用させたい場合は、 ibmcloud ks experimental trusted-profile default set コマンドを 実行します。
信頼できるプロフィールの詳細を確認する
同じリソース・グループ内のクラスタのデフォルトの信頼済みプロファイルを取得するには、 ibmcloud ks experimental trusted-profile default get コマンドを 実行します。
IBM Cloud サービスで認証するためのアプリケーション・ポッドの構成
IBM Cloud® Kubernetes Service クラスター内で実行されるアプリケーションポッドに対し、 IBM Cloud (IAM)( Identity and Access Management )の「信頼済みプロファイル」を使用して、 IBM Cloud のサービスへのアクセス権を付与します。 開発者は、セットアップされた IAM トラステッド・プロファイルにリンクされているクラスター内の IBM Cloud サービスで認証を行うようにアプリケーション・ポッドを構成できます。
これらの手順を実行するには、管理者アクセス・ロールを持つ必要はありません。 ただし、次の要件を満たす必要があります: ビューア プラットフォーム アクセス・ロール; IBM Cloud のクラスタの ライター サービス アクセス・ロール Kubernetes Service の IAM; IAMアイデンティティ・サービス の iam-identity.profile.create および iam-identity.profile.linkToResource アクション。
始める前に
- アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
- アカウント管理者がクラスターの IAM トラステッド・プロファイルを作成したことを確認します。
IBM Cloud サービスで認証を行うようにアプリケーション・ポッドを構成するには、以下のようにします。
-
サービスアカウントトークン使用量の予測 を使用するように、ポッドの設定ファイルを設計してください。
containersセクションのvolumeMountsセクションで、ID トークンをマウントします。
... volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token ``` 1. `volumes` セクションで、サービス・アカウント・トークン・ボリューム予測をセットアップします。 `expirationSeconds` フィールドを変更して、トークンの有効期間を制御します。 IAM トークンを取得するには、サービス・アカウント・トークンの有効期限が 1 時間以下でなければなりません。 {: tip} ```yaml {: codeblock} ... volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam ... ``` -
サービス・アカウント予測トークンを、IBM Cloud サービスへの後続の API 呼び出しに使用可能な IAM トークンと交換するようにアプリを設計します。 以下の認証要求の例を確認してください。 「
${profile_id}」を、クラスターがリンクされている信頼済みプロファイルのIDに置き換えてください。 利用可能なプロファイル ID を一覧表示するには、 アカウントibmcloud iam tpsコマンドやGET 'https://iam.cloud.ibm.com/v1/profiles/?account_id=<account_id>'`` を使用するか、 IAM コンソールで信頼済みプロファイルを表示することができます。curl -s -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Accept: application/json" \ -d grant_type=urn:ibm:params:oauth:grant-type:cr-token \ -d cr_token=$(cat /var/run/secrets/tokens/sa-token) \ -d profile_id=${profile_id} \ https://iam.cloud.ibm.com/identity/token -
アプリをデプロイする前に、以下の Kubernetes ジョブの例を試して、トークン交換をテストします。 以下の Kubernetes ジョブでは、
curlポッドが IBM Cloud IAM に対して API 要求を行い、クラスターの公開鍵が IAM アクセス・トークンと交換されたことを確認します。 アプリにより、トラステッド・プロファイルで許可されている他の IBM Cloud サービスが呼び出される場合もあります。apiVersion: batch/v1 kind: Job metadata: name: token-exchange-job namespace: default spec: template: spec: containers: - name: curl image: curlimages/curl:7.77.0 command: ["/bin/sh"] args: ["-c", "curl -s -H \"Content-Type: application/x-www-form-urlencoded\" -H \"Accept: application/json\" -d grant_type=urn:ibm:params:oauth:grant-type:cr-token -d cr_token=$(cat /var/run/secrets/tokens/sa-token) -d profile_id=<profile_id> https://iam.cloud.ibm.com/identity/token"] volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token restartPolicy: Never serviceAccountName: default volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam -
ジョブをデプロイします。
kubectl apply -f exchange-job.yaml -
ジョブの詳細を調べて、成功したことを確認します。
kubectl describe job token-exchange-job -
job completedおよびsucceededメッセージの出力を調べて、ジョブが成功したことを確認します。 -
ジョブが成功した場合は、フランクフルトの Activity Tracker グローバル・イベントを確認して、トラステッド・プロファイル要求の詳細を含むログ行を検証します。 ジョブが失敗した場合は、構成を確認して再試行してください。