検索

17.2. チュートリアル: AWS STS を使用する ROSA の説明

download PDF

このチュートリアルでは、Red Hat OpenShift Service on AWS (ROSA) がユーザーの Amazon Web Services (AWS) アカウント内のリソースと対話できるようにする方法を 2 つ紹介します。ここでは、Security Token Service (STS) を使用する ROSA が必要な認証情報の取得に使用するコンポーネントとプロセスについて詳しく説明します。また、STS を使用する ROSA がよりセキュアで推奨される方法である理由も説明します。

注記

このコンテンツは現在、AWS STS を使用した ROSA Classic を扱っています。AWS STS を使用した ROSA with Hosted Control Plane (HCP) については、AWS STS と ROSA with HCP の説明 を参照してください。

このチュートリアルでは次のことを行います。

  • 2 つのデプロイ方法を示します。

    • IAM ユーザーを使用する ROSA
    • STS を使用する ROSA
  • 2 つの方法の違いを説明します。
  • STS を使用する ROSA がよりセキュアで推奨される方法である理由を説明します。
  • STS を使用する ROSA がどのように機能するかを説明します。

17.2.1. ROSA をデプロイするための各種認証方法

Red Hat は、ROSA の一部として、お客様の AWS アカウント内のインフラストラクチャーリソースを管理します。そのため、Red Hat に必要な権限を付与する必要があります。必要な権限を付与する方法は、現在、次の 2 つのものがサポートされています。

  • AdministratorAccess ポリシーで静的 IAM ユーザー認証情報を使用する

    このチュートリアルでは、この方法を "IAM ユーザーを使用する ROSA" と呼びます。これは推奨される認証方法ではありません。

  • AWS STS と有効期間の短い動的トークンを使用する

    このチュートリアルでは、この方法を "STS を使用する ROSA" と呼びます。これは推奨される認証方法です。

17.2.1.1. IAM ユーザーを使用する ROSA

ROSA のリリース当初、認証方法は IAM ユーザーを使用する ROSA だけでした。この方法では、AdministratorAccess ポリシーを持つ IAM ユーザーに対して、ROSA を使用する AWS アカウントに必要なリソースを作成するためのフルアクセスを付与します。その後、必要に応じてクラスターで認証情報を作成および拡張できます。

17.2.1.2. STS を使用する ROSA

STS を使用する ROSA では、AWS アカウント内のリソースへの限定的かつ短期間のアクセスをユーザーに付与します。STS による方法では、事前定義されたロールとポリシーを使用して、IAM ユーザーまたは認証されたフェデレーションユーザーに一時的な最小限の権限を付与します。通常、認証情報は要求されてから 1 時間後に期限切れになります。有効期限が切れると、認証情報は AWS によって認識されなくなり、その認証情報を使用して実行される API 要求からアカウントにアクセスできなくなります。詳細は、AWS のドキュメント を参照してください。現在、IAM ユーザーを使用する ROSA と STS を使用する ROSA の両方が有効ですが、STS を使用する ROSA が優先および推奨される方法です。

17.2.2. STS を使用する ROSA のセキュリティー

STS を使用する ROSA は、以下に示すいくつかの重要な要素により、IAM ユーザーを使用する ROSA よりもセキュリティーが向上します。

  • ユーザーが事前に作成する明示的かつ限定的なロールとポリシーのセット。要求されたすべての権限と使用されるすべてのロールをユーザーが把握することになります。
  • サービスは、これらの権限以外の操作を一切行うことができません。
  • サービスは、操作を実行する必要が生じるたびに、1 時間以内に期限切れになる認証情報を取得します。そのため、認証情報のローテーションや取り消しが不要になります。さらに、認証情報の有効期限により、認証情報の漏洩や再利用のリスクが軽減されます。

17.2.3. AWS STS の説明

ROSA は、AWS STS を使用して、短期間のセキュリティー認証情報を持つ最小限の権限を、分離された特定の IAM ロールに付与します。認証情報は、AWS の API 呼び出しを実行する各コンポーネントおよびクラスターに固有の IAM ロールに関連付けられます。この方法は、クラウドサービスのリソース管理における最小権限と安全なプラクティスの原則に沿ったものです。ROSA コマンドラインインターフェイス (CLI) ツールは、固有のタスクに割り当てられた STS のロールとポリシーを管理し、OpenShift 機能の一部として AWS リソースに対してアクションを実行します。

STS のロールとポリシーは、ROSA クラスターごとに作成する必要があります。これを容易にするために、インストールツールには、ロールをポリシーとして作成するために必要なすべてのコマンドおよびファイルと、CLI でロールとポリシーを自動的に作成できるようにするオプションが用意されています。さまざまな --mode オプションの詳細は、カスタマイズを使用した STS を使用する ROSA クラスターの作成 を参照してください。

17.2.4. STS を使用する ROSA に固有のコンポーネント

  • AWS インフラストラクチャー - クラスターに必要なインフラストラクチャーを提供します。これには、実際の EC2 インスタンス、ストレージ、ネットワークコンポーネントが含まれます。コンピュートノードでサポートされているインスタンスタイプと、コントロールプレーンとインフラストラクチャーノードの設定用に プロビジョニングされる AWS インフラストラクチャー を確認するには、AWS コンピュートタイプ を参照してください。
  • AWS STS - 上記の認証方法のセクションを参照してください。
  • OpenID Connect (OIDC) - クラスター Operator が AWS で認証し、信頼ポリシーを通じてクラスターのロールを引き受け、必要な API 呼び出しを実行するために STS から一時的な認証情報を取得するためのメカニズムを提供します。
  • ロールとポリシー - ロールとポリシーは、STS を使用する ROSA と IAM ユーザーを使用する ROSA の主な違いの 1 つです。STS を使用する ROSA の場合、ROSA で使用されるロールとポリシーは、アカウント全体のロールとポリシーと Operator のロールとポリシーに分類されます。

    ポリシーは、各ロールに対して許可されるアクションを決定します。個々のロールとポリシーの詳細は、STS を使用する ROSA クラスターの IAM リソースについて を参照してください。

    • アカウント全体のロールは次のとおりです。

      • ManagedOpenShift-Installer-Role
      • ManagedOpenShift-ControlPlane-Role
      • ManagedOpenShift-Worker-Role
      • ManagedOpenShift-Support-Role
    • アカウント全体のポリシーは次のとおりです。

      • ManagedOpenShift-Installer-Role-Policy
      • ManagedOpenShift-ControlPlane-Role-Policy
      • ManagedOpenShift-Worker-Role-Policy
      • ManagedOpenShift-Support-Role-Policy
      • ManagedOpenShift-openshift-ingress-operator-cloud-credentials [1]
      • ManagedOpenShift-openshift-cluster-csi-drivers-ebs-cloud-credent [1]
      • ManagedOpenShift-openshift-cloud-network-config-controller-cloud [1]
      • ManagedOpenShift-openshift-machine-api-aws-cloud-credentials [1]
      • ManagedOpenShift-openshift-cloud-credential-operator-cloud-crede [1]
      • ManagedOpenShift-openshift-image-registry-installer-cloud-creden [1]

        1. このポリシーは、下記のクラスター Operator ロールによって使用されます。Operator ロールは既存のクラスター名に依存しており、アカウント全体のロールと同時に作成できないため、2 番目のステップで作成されます。
    • Operator のロールは次のとおりです。

      • <cluster-name\>-xxxx-openshift-cluster-csi-drivers-ebs-cloud-credent
      • <cluster-name\>-xxxx-openshift-cloud-network-config-controller-cloud
      • <cluster-name\>-xxxx-openshift-machine-api-aws-cloud-credentials
      • <cluster-name\>-xxxx-openshift-cloud-credential-operator-cloud-crede
      • <cluster-name\>-xxxx-openshift-image-registry-installer-cloud-creden
      • <cluster-name\>-xxxx-openshift-ingress-operator-cloud-credentials
    • 信頼ポリシーは、アカウント全体および Operator のロールごとに作成されます。

17.2.5. ROSA STS クラスターのデプロイ

以下の手順にリストされているリソースを最初から作成する必要はありません。ROSA CLI が必要な JSON ファイルを作成し、必要なコマンドを出力します。さらに、必要に応じて ROSA CLI にコマンドを実行させることもできます。

STS を使用する ROSA クラスターをデプロイする手順

  1. アカウント全体のロールとポリシーを作成します。
  2. 権限ポリシーを、対応するアカウント全体のロールに割り当てます。
  3. クラスターを作成します。
  4. Operator のロールとポリシーを作成します。
  5. 権限ポリシーを、対応する Operator のロールに割り当てます。
  6. OIDC プロバイダーを作成します。

ロールとポリシーは、ROSA CLI によって自動的に作成することも、ROSA CLI で --mode manual フラグまたは --mode auto フラグを利用して手動で作成することもできます。デプロイの詳細は、カスタマイズしたクラスターを作成する または クラスターのデプロイのチュートリアル を参照してください。

17.2.6. STS を使用する ROSA のワークフロー

ユーザーは、必要なアカウント全体のロールとアカウント全体のポリシーを作成します。詳細は、このチュートリアルのコンポーネントのセクションを参照してください。ロールの作成時に、クロスアカウント信頼ポリシーという信頼ポリシーが作成されます。このポリシーは、Red Hat 所有のロールがこのロールを引き受けることを許可するものです。また、EC2 サービス用の信頼ポリシーも作成されます。このポリシーは、EC2 インスタンス上のワークロードがロールを引き受けて認証情報を取得することを許可するものです。ユーザーは、対応する権限ポリシーを各ロールに割り当てることができます。

アカウント全体のロールとポリシーを作成した後、ユーザーはクラスターを作成できます。クラスターの作成を開始すると、クラスター Operator が AWS API 呼び出しを実行できるように、複数の Operator ロールが作成されます。これらのロールを、以前に作成された対応する権限ポリシーと、OIDC プロバイダーの信頼ポリシーに割り当てます。Operator ロールは、AWS リソースへのアクセスが必要な Pod を最終的に表すという点で、アカウント全体のロールとは異なります。ユーザーは IAM ロールを Pod に割り当てることができないため、Operator (ひいては Pod) が必要なロールにアクセスできるように、OIDC プロバイダーを使用して信頼ポリシーを作成する必要があります。

対応する権限ポリシーにロールを割り当てたら、最後のステップとして OIDC プロバイダーを作成します。

cloud experts sts explained creation flow

新しいロールが必要な場合、現在 Red Hat のロールを使用しているワークロードが AWS アカウントのロールを引き受け、AWS STS から一時的な認証情報を取得し、引き受けたロールの権限ポリシーに従ってお客様の AWS アカウント内の API 呼び出しを使用してアクションの実行を開始します。認証情報は一時的なもので、有効期間は最大 1 時間です。

cloud experts sts explained highlevel

ワークフロー全体を次の図に示します。

cloud experts sts explained entire flow

Operator は、次のプロセスを使用して、タスクを実行するために必要な認証情報を取得します。各 Operator には、Operator のロール、権限ポリシー、および OIDC プロバイダーの信頼ポリシーが割り当てられます。Operator は、ロールとトークンファイル (web_identity_token_file) を含む JSON Web トークンを OIDC プロバイダーに渡すことによってロールを引き受けます。OIDC プロバイダーは署名された鍵を公開鍵で認証します。公開鍵はクラスターの作成時に作成され、S3 バケットに保存されます。次に、Operator は、署名されたトークンファイル内のサブジェクトがロール信頼ポリシー内のロールと一致することを確認します。このロールは、OIDC プロバイダーが許可されたロールのみを取得できるようにするためのものです。その後、OIDC プロバイダーが一時的な認証情報を Operator に返し、Operator が AWS API 呼び出しを実行できるようにします。視覚的に表した図を以下に示します。

cloud experts sts explained oidc op roles

17.2.7. STS を使用する ROSA のユースケース

クラスターのインストール時にノードを作成する

Red Hat のインストールプログラムは、RH-Managed-OpenShift-Installer ロールと信頼ポリシーを使用して、お客様のアカウントの Managed-OpenShift-Installer-Role ロールを引き受けます。このプロセスにより、AWS STS から一時的な認証情報が返されます。インストールプログラムは、STS から受け取った一時的な認証情報を使用して、必要な API 呼び出しの実行を開始します。インストールプログラムは必要なインフラストラクチャーを AWS に作成します。この認証情報は 1 時間以内に期限切れになり、インストールプログラムはお客様のアカウントにアクセスできなくなります。

このプロセスはサポートケースにも適用されます。サポートケースでは、インストールプログラムの代わりに Red Hat Site Reliability Engineer (SRE) がプロセスを実行します。

クラスターのスケーリング

machine-api-operator は、AssumeRoleWithWebIdentity を使用して machine-api-aws-cloud-credentials ロールを引き受けます。これにより、クラスター Operator が認証情報を受け取るシーケンスが開始します。その後、machine-api-operator ロールが関連する API 呼び出しを実行して、クラスターに EC2 インスタンスをさらに追加できるようになります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.