9.2. サービスアカウントがユーザー定義プロジェクトで AWS IAM ロールを引き受ける方法


AWS Security Token Service (STS) を使用する Red Hat OpenShift Service on AWS クラスターをインストールすると、Pod ID Webhook リソースがデフォルトで含まれます。

Pod ID Webhook を使用して、ユーザー定義プロジェクトのサービスアカウントが、同じプロジェクトの Pod で AWS Identity and Access Management (IAM) ロールを引き受けることができます。IAM ロールを引き受けると、Pod 内のサービスアカウントが使用する一時的な STS 認証情報が提供されます。引き受けたロールに必要な AWS 権限がある場合、サービスアカウントは Pod で AWS SDK 操作を実行できます。

Pod の Pod ID Webhook を有効にするには、プロジェクトで eks.amazonaws.com/role-arn アノテーションを使用してサービスアカウントを作成する必要があります。アノテーションは、サービスアカウントが引き受ける AWS IAM ロールの Amazon Resource Name (ARN) を参照する必要があります。また、Pod 仕様でサービスアカウントを参照し、サービスアカウントと同じプロジェクトに Pod をデプロイする必要があります。

ユーザー定義プロジェクトでの Pod ID Webhook ワークフロー

次の図は、ユーザー定義プロジェクトでの Pod ID Webhook ワークフローを示しています。

図9.2 ユーザー定義プロジェクトでの Pod ID Webhook ワークフロー

Pod アイデンティティー Webhook ワークフロー

ワークフローには次の段階があります。

  1. ユーザー定義のプロジェクト内で、ユーザーは eks.amazonaws.com/role-arn アノテーションを含むサービスアカウントを作成します。アノテーションは、サービスアカウントが引き受ける AWS IAM ロールの ARN を指します。
  2. アノテーション付きのサービスアカウントを参照する設定を使用して Pod が同じプロジェクトにデプロイされると、Pod ID Webhook により Pod が変更になります。ミューテーションは、Pod または Deployment リソース設定で指定する必要なく、次のコンポーネントを Pod に挿入します。

    • AWS SDK オペレーションを実行するために必要なアクセス権を持つ IAM ロールの ARN を含む $AWS_ARN_ROLE 環境変数。
    • サービスアカウントの OpenID Connect (OIDC) トークンへの Pod 内のフルパスを含む $AWS_WEB_IDENTITY_TOKEN_FILE 環境変数。フルパスは /var/run/secrets/eks.amazonaws.com/serviceaccount/token です。
    • マウントポイント /var/run/secrets/eks.amazonaws.com/serviceaccount にマウントされた aws-iam-token ボリューム。token という名前の OIDC トークンファイルがボリュームに含まれています。
  3. OIDC トークンは、Pod から OIDC プロバイダーに渡されます。次の要件が満たされている場合は、プロバイダーがサービスアカウント ID を認証します。

    • ID 署名は有効であり、秘密鍵によって署名されています。
    • sts.amazonaws.com オーディエンスは OIDC トークンにリストされており、OIDC プロバイダーで設定されたオーディエンスと一致します。

      注記

      Pod ID Webhook は、デフォルトで sts.amazonaws.com オーディエンスを OIDC トークンに適用します。

      STS クラスターを使用する Red Hat OpenShift Service on AWS では、インストール中に OIDC プロバイダーが作成され、デフォルトでサービスアカウント発行者として設定されます。sts.amazonaws.com オーディエンスは、デフォルトで OIDC プロバイダーに設定されています。

    • OIDC トークンの有効期限が切れていません。
    • トークンの発行者の値には、OIDC プロバイダーの URL が含まれています。
  4. プロジェクトとサービスアカウントが、引き受ける IAM ロールの信頼ポリシーのスコープ内にある場合は、認可が成功します。
  5. 認証と認可が成功すると、セッショントークンの形式の一時的な AWS STS 認証情報が Pod に渡され、サービスアカウントで使用できるようになります。認証情報を使用することで、IAM ロールで有効になっている AWS アクセス許可がサービスアカウントに一時的に付与されます。
  6. Pod で AWS SDK オペレーションを実行すると、サービスアカウントは一時的な STS 認証情報を AWS API に提供して、その ID を確認します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.