AWS セキュリティートークンサービス (STS) を使用したアカウントおよびクラスターの設定

Red Hat OpenShift Service on AWS 4

AWS Security Token Service を使用するアカウントおよび Red Hat OpenShift Service on AWS クラスターの設定

概要

本書では、AWS Security Token Service(STS)を使用する Red Hat OpenShift Service on AWS(ROSA)クラスターを起動する方法を説明します。

第1章 STS ワークフローの使用ガイド

1.1. STS を使用した ROSA の使用

Amazon Web Services (AWS) Security Token Service (STS) は、IAM またはフェデレーションされたユーザーの短期認証情報を提供するグローバル Web サービスです。Red Hat OpenShift Service on AWS (ROSA) で AWS STS を使用し、コンポーネント固有の IAM ロールについて一時的な制限された権限付き認証情報を割り当てることができます。サービスを使用すると、クラスターコンポーネントはセキュアなクラウドリソース管理プラクティスを使用して AWS API 呼び出しを実行できます。

このワークフローに従って、AWS セキュリティートークンサービス (STS) を使用して Red Hat OpenShift Service on AWS (ROSA) クラスターを設定し、これにアクセスします。

1.2. 関連情報

第2章 STS を使用した ROSA の AWS 前提条件

Red Hat OpenShift Service on AWS(ROSA)は、Red Hat がクラスターをお客様の既存の Amazon Web Service(AWS)アカウントにデプロイできるようにするモデルを提供します。

STS で ROSA をインストールする前に、以下の AWS 前提条件を満たしていることを確認してください。

2.1. デプロイメントの前提条件

Red Hat OpenShift Service on AWS(ROSA)を既存の Amazon Web Services(AWS)アカウントにデプロイするために、Red Hat では複数の前提条件を満たす必要があることを示します。

Red Hat は、AWS Organizations を使用して複数の AWS アカウントを管理することを推奨します。お客様が管理する AWS Organizations は、複数の AWS アカウントをホストします。組織には、すべてのアカウントがアカウント階層で参照する組織には root アカウントがあります。

ROSA クラスターが AWS Organizational Unit 内の AWS アカウントでホストされるようにすることがベストプラクティスです。Service Control Policy (SCP) が作成され、AWS サブアカウントのアクセスが許可されるサービスを管理する AWS Organizational Unit に適用されます。SCP は、Organizational Unit 内のすべての AWS サブアカウントの単一の AWS アカウント内で利用可能なパーミッションにのみ適用されます。SCP を単一の AWS アカウントに適用することもできます。お客様の AWS Organizations 内の他のすべてのアカウントは、お客様が必要とされる方法に応じて管理されます。Red Hat のサイト信頼性エンジニアリング (SRE) には、AWS Organizations 内の SCP に対する制御がありません。

2.2. デプロイメントに STS を使用する場合のカスタマー要件

AWS Security Token Service(STS)を使用する Red Hat OpenShift Service on AWS(ROSA)クラスターをデプロイする前に、以下の前提条件を満たす必要があります。

2.2.1. アカウント

  • お客様は、お客様の AWS アカウント内に プロビジョニングされる Red Hat OpenShift Service on AWS をサポートするのに十分な AWS 制限が設定されていることを確認します。
  • SCP ポリシーを適用し、強制される場合、これらのポリシーは、クラスターが必要とするロールおよびポリシーよりも制限的であってはなりません。
  • お客様の AWS アカウントは、Red Hat に譲渡することはできません。
  • お客様は、Red Hat のアクティビティーに対する定義されたロールおよびポリシー以外に、追加の AWS 使用制限を課すことはできません。制限を課すことにより、Red Hat のインシデントへの対応が大幅に妨げられます。
  • お客様は、同じ AWS アカウント内にネイティブ AWS サービスをデプロイすることができます。
  • Elastic Load Balancer(ELB)の設定が必要となるため、アカウントには service-linked ロールを設定する必要があります。

    注記

    Red Hat OpenShift Service on AWS やその他の Red Hat がサポートするサービスをホストする VPC とは別の Virtual Private Cloud(VPC)でリソースをデプロイすることが推奨されますが、これは義務ではありません。

2.2.2. アクセス要件

  • Red Hat には、お客様が指定する AWS アカウントへの AWS コンソールへのアクセスが必要です。このアクセスは、Red Hat によって保護され、管理されます。
  • お客様は AWS アカウントを使用して Red Hat OpenShift Service on AWS クラスター内でパーミッションを昇格させることはできません。
  • rosa CLI ユーティリティーまたは OpenShift Cluster Manager(OCM) コンソールで利用できるアクションは、お客様の AWS アカウントで直接実行することはできません。

2.2.3. サポート要件

  • Red Hat では、お客様が AWS の ビジネスサポート を少なくとも用意することを推奨します。
  • Red Hat は、お客様より、お客様の代わりに AWS サポートをリクエストする許可を受けている場合があります。
  • Red Hat は、お客様より、お客様のアカウントで AWS リソース制限の引き上げをリクエストする許可を受けている場合があります。
  • Red Hat は、この要件セクションで指定されていない場合に、すべての Red Hat OpenShift Service on AWS クラスターについての制約、制限、期待、およびデフォルトを同じ方法で管理します。

2.2.4. セキュリティー要件

  • ボリュームスナップショットは、お客様の AWS アカウントおよびお客様が指定するリージョン内に残ります。
  • Red Hat には、許可リストにある IP アドレスから EC2 ホストおよび API サーバーへの ingress アクセスが必要です。
  • Red Hat では、文書化されたドメインで egress を許可する必要があります。

2.3. オプトインリージョンでのクラスターのデプロイ要件

AWS オプトインリージョンは、デフォルトで有効にされないリージョンです。オプトインリージョンに AWS Security Token Service(STS)を使用する Red Hat OpenShift Service on AWS(ROSA)クラスターをデプロイする場合、以下の要件を満たす必要があります。

  • リージョンは AWS アカウントで有効にされている必要があります。オプトインリージョンの有効化についての詳細は、AWS ドキュメントの「 Managing AWS Regions 」を参照してください。
  • AWS アカウントのセキュリティートークンのバージョンは、バージョン 2 に設定する必要があります。オプトインリージョンには、バージョン 1 のセキュリティートークンを使用することはできません。

    重要

    セキュリティートークンバージョン 2 に更新すると、トークンの長さが増えるため、トークンを格納するシステムに影響が及ぶ可能性があります。詳細は 、STS 設定の設定について AWS ドキュメントを参照してください

2.3.1. AWS セキュリティートークンバージョンの設定

AWS オプトインリージョンで AWS Security Token Service(STS)で Red Hat OpenShift Service on AWS(ROSA)クラスターを作成する場合は、AWS アカウントでセキュリティートークンバージョンをバージョン 2 に設定する必要があります。

前提条件

  • インストールホストに、最新の AWS CLI をインストールして設定している。

手順

  1. AWS CLI 設定で定義される AWS アカウントの ID を一覧表示します。

    $ aws sts get-caller-identity --query Account --output json

    出力が関連する AWS アカウントの ID と一致していることを確認します。

  2. AWS アカウントに設定されるセキュリティートークンのバージョンを一覧表示します。

    $ aws iam get-account-summary --query SummaryMap.GlobalEndpointTokenVersion --output json

    出力例

    1

  3. AWS アカウントのすべてのリージョンについてセキュリティートークンのバージョン 2 に更新するには、以下のコマンドを実行します。

    $ aws iam set-security-token-service-preferences --global-endpoint-token-version v2Token
    重要

    セキュリティートークンバージョン 2 に更新すると、トークンの長さが増えるため、トークンを格納するシステムに影響が及ぶ可能性があります。詳細は 、STS 設定の設定について AWS ドキュメントを参照してください

2.4. AWS の Red Hat 管理 IAM リファレンス

STS デプロイメントモデルでは、Red Hat は Amazon Web Services (AWS) IAM ポリシー、IAM ユーザー、または IAM ロールを作成し、管理しなくなります。

2.5. プロビジョニングされた AWS インフラストラクチャー

以下は、デプロイされた Red Hat OpenShift Service on AWS(ROSA)クラスターでプロビジョニングされる Amazon Web Services(AWS)コンポーネントの概要です。プロビジョニングされたすべての AWS コンポーネントの詳細な一覧は、OpenShift Container Platform ドキュメント を参照してください。

2.5.1. EC2 インスタンス

AWS EC2 インスタンスは、AWS パブリッククラウドに ROSA のコントロールプレーンおよびデータプレーン機能をデプロイするために必要です。

インスタンスタイプは、ワーカーノードの数に応じてコントロールプレーンおよびインフラストラクチャーノードによって異なる場合があります。少なくとも、以下の EC2 インスタンスがデプロイされます。

  • 3 つの m5.2xlarge コントロールプレーンノード
  • 2 つの r5.xlarge インフラストラクチャーノード
  • 2 つの m5.xlarge カスタマイズ可能なワーカーノード

ワーカーノード数の詳細は、このページの「関連情報」セクションの「Initial Planning Considerations」へのリンクを参照してください。

2.5.2. Elastic Block Storage ストレージ

Amazon EBS ブロックストレージは、ローカルノードストレージおよび永続ボリュームストレージの両方に使用されます。

各 EC2 インスタンスのボリューム要件:

  • コントロールプレーンボリューム

    • サイズ: 350GB
    • タイプ: io1
    • 1 秒あたりの I/O 処理数: 1000
  • インフラストラクチャーボリューム

    • サイズ: 300GB
    • タイプ: gp2
    • 1 秒あたりの I/O 処理数: 100
  • ワーカーボリューム

    • サイズ: 300GB
    • タイプ: gp2
    • 1 秒あたりの I/O 処理数: 100

2.5.3. Elastic Load Balancer

API 用に最大 2 つの Network Elastic Load Balancers (ELB) と、アプリケーションルーター用に最大 2 つの Classic ELB。詳細は、AWS についての ELB ドキュメント を参照してください。

2.5.4. S3 ストレージ

イメージレジストリーおよび Elastic Block Store (EBS) ボリュームスナップショットは、AWS S3 ストレージでサポートされます。リソースのプルーニングは、S3 の使用とクラスターのパフォーマンスを最適化するために定期的に実行されます。

注記

それぞれ 2TB の通常のサイズの 2 つのバケットが必要です。

2.5.5. VPC

お客様はクラスターごとに 1 つの VPC を確認できるはずです。さらに、VPC には以下の設定が必要です。

  • サブネット: 単一アベイラビリティーゾーンのクラスターの 2 つのサブネット、または複数のアベイラビリティーゾーンのクラスターの 6 つのサブネット。
  • ルーターテーブル: プライベートサブネットごとに 1 つのルーターテーブルと、クラスターごとに 1 つの追加テーブル。
  • インターネットゲートウェイ: クラスターごとに 1 つのインターネットゲートウェイ。
  • NAT ゲートウェイ: パブリックサブネットごとに 1 つの NAT ゲートウェイ。

2.5.6. セキュリティーグループ

AWS セキュリティーグループは、プロトコルおよびポートアクセスレベルでセキュリティーを提供します。これらは EC2 インスタンスおよび Elastic Load Balancer に関連付けられます。各セキュリティーグループには、EC2 インスタンスの送受信トラフィックをフィルタリングする一連のルールが含まれます。OpenShift インストールに必要なポートがネットワーク上で開いており、ホスト間のアクセスを許可するよう設定されていることを確認する必要があります。

グループタイプIP プロトコルポート範囲

MasterSecurityGroup

AWS::EC2::SecurityGroup

icmp

0

tcp

22

tcp

6443

tcp

22623

WorkerSecurityGroup

AWS::EC2::SecurityGroup

icmp

0

tcp

22

BootstrapSecurityGroup

AWS::EC2::SecurityGroup

tcp

22

tcp

19531

2.6. 次のステップ

必要な AWS サービスクォータの確認

2.7. 関連情報

第3章 必要な AWS サービスクォータ

Red Hat OpenShift Service on AWS クラスターの実行に必要な Amazon Web Service (AWS) サービスクォータの一覧を確認します。

3.1. 必要な AWS サービスクォータ

以下の表は、Red Hat OpenShift Service on AWS クラスターを作成し、実行するために必要な AWS サービスクォータおよびレベルについて説明しています。

注記

AWS SDK は ROSA がクォータの確認を可能にしますが、AWS SDK 計算には既存の使用は含まれません。そのため、クォータチェックを AWS SDK で合格し、クラスターの作成が失敗する可能性があります。この問題を修正するには、クォータを増やします。

特定のクォータを変更または増やす必要がある場合は、Amazon のドキュメントの「requesting a quota inscrease」を参照してください。

クォータ名サービスコードクォータコード最低限必要な値推奨値

EIP 数 - VPC EIP

ec2

L-0263D0A3

5

5

オンデマンド標準 (A、C、D、H、I、M、R、T、Z) インスタンスの実行

ec2

L-1216C47A

100

100

リージョンごとの VPC

vpc

L-F678F1CE

5

5

リージョンごとのインターネットゲートウェイ

vpc

L-A4707A72

5

5

リージョンごとのネットワークインターフェース

vpc

L-DF5E4CA3

5,000

5,000

汎用 SSD (gp2) ボリュームストレージ

ebs

L-D18FCD1D

50

300

EBS スナップショットの数

ebs

L-309BACF6

300

300

プロビジョニングされた IOPS

ebs

L-B3A130E6

300,000

300,000

プロビジョニングされた IOPS SSD (io1) ボリュームストレージ

ebs

L-FD252861

50

300

リージョンごとのアプリケーションロードバランサー

elasticloadbalancing

L-53DA6B97

50

50

リージョンごとの Classic Load Balancer

elasticloadbalancing

L-E9E9831D

20

20

3.2. 次のステップ

第4章 STS を使用するための環境の設定

AWS の前提条件を満たしていることを確認した後に、環境を設定し、Red Hat OpenShift Service on AWS (ROSA) をインストールします。

4.1. STS のための環境の設定

AWS セキュリティートークンサービス (STS) を使用してクラスターを作成する前に、環境を設定するには以下の手順を実行します。

前提条件

  • デプロイメントの前提条件およびポリシーを確認し、実行します。
  • Red Hat アカウントがない場合は 作成します。次に、確認リンクについてのメールを確認します。ROSA をインストールするには認証情報が必要です。

手順

  1. 使用する Amazon Web Services (AWS) アカウントにログインします。

    実稼働クラスターを実行するには、専用の AWS アカウントを使用することが推奨されます。AWS 組織を使用している場合、組織内の AWS アカウントを使用するか、新規のアカウントを作成できます。

    AWS Organizations を使用しており、使用する予定の AWS アカウントにサービスコントロールポリシー (SCP) を適用する必要がある場合、これらのポリシーは、クラスターが必要とするロールおよびポリシーよりも制限的なものである必要はありません。

  2. AWS コンソールで ROSA サービスを有効にします。

    1. AWS アカウントにサインインし ます。
    2. ROSA を有効にするには、ROSA service に移動し、Enable OpenShift を選択します。
  3. AWS CLI をインストールし、設定します。

    1. AWS コマンドラインインターフェースのドキュメントを参照し、オペレーティングシステムの AWS CLI をインストールし設定します

      the .aws/credentials ファイルで正しい aws_access_key_id および aws_secret_access_key を指定します。AWS ドキュメントで AWS 設定の基本について 参照してください。

    2. デフォルトの AWS リージョンを設定します。

      注記

      環境変数を使用してデフォルトの AWS リージョンを設定できます。

      ROSA は以下の優先順位でリージョンを評価します。

      1. --region フラグを指定して rosa コマンドを実行する際に指定されるリージョン。
      2. AWS_DEFAULT_REGION 環境変数に設定されるリージョン。AWS ドキュメントの「Environment variables to configure the AWS CLI」を参照してください。
      3. AWS 設定ファイルで設定されるデフォルトのリージョン。AWS ドキュメントの「Quick configuration with aws configure」を参照してください。
    3. オプション: AWS の名前付きプロファイルを使用して AWS CLI 設定および認証情報を設定します。rosa は以下の優先順位で AWS の名前付きプロファイルを評価します。

      1. rosa コマンドを --profile フラグを指定して実行する場合に指定されるプロファイル。
      2. AWS_PROFILE 環境変数に設定されるプロファイル。AWS ドキュメントの「Named profiles」を参照してください。
    4. 以下のコマンドを実行して AWS API をクエリーし、AWS CLI がインストールされ、正しく設定されていることを確認します。

      $ aws sts get-caller-identity
  4. Red Hat OpenShift Service on AWS コマンドラインインターフェース (CLI) バージョン 1.0.8 以降の rosa をインストールします。

    1. お使いのオペレーティングシステム用の rosa CLI の最新リリース をダウンロードします。
    2. オプション: rosa にダウンロードしたファイルの名前を変更し、ファイルを実行可能にします。本書では、rosa を使用して実行可能ファイルを参照します。

      $ chmod +x rosa
    3. オプション: rosa をパスに追加します。

      $ mv rosa /usr/local/bin/rosa
    4. 以下のコマンドを実行して、インストールを確認します。

      $ rosa

      出力例

      Command line tool for ROSA.
      
      Usage:
        rosa [command]
      
      Available Commands:
        completion  Generates bash completion scripts
        create      Create a resource from stdin
        delete      Delete a specific resource
        describe    Show details of a specific resource
        edit        Edit a specific resource
        help        Help about any command
        init        Applies templates to support Managed OpenShift on AWS clusters
        list        List all resources of a specific type
        login       Log in to your Red Hat account
        logout      Log out
        logs        Show logs of a specific resource
        verify      Verify resources are configured correctly for cluster install
        version     Prints the version of the tool
      
      Flags:
            --debug     Enable debug mode.
        -h, --help      help for rosa
        -v, --v Level   log level for V logs
      
      Use "rosa [command] --help" for more information about a command.

    5. オプション: rosa completion コマンドを実行して bash 補完ファイルを生成できます。

      $ rosa completion > /etc/bash_completion.d/rosa

      オペレーティングシステムの正しい場所にこのファイルを追加します。たとえば、Linux マシンで以下のコマンドを実行し、rosa bash 補完を有効にします。

      $ source /etc/bash_completion.d/rosa
  5. rosa CLI で Red Hat アカウントにログインします。

    1. 以下のコマンドを入力します。

      $ rosa login
    2. <my_offline_access_token> をトークンに置き換えます。

      出力例

      To login to your Red Hat account, get an offline access token at https://cloud.redhat.com/openshift/token/rosa
      ? Copy the token and paste it here: <my-offline-access-token>

      出力例

      I: Logged in as '<rh-rosa-user>' on 'https://api.openshift.com'

  6. AWS アカウントに Red Hat OpenShift Service on AWS クラスターにデプロイするために必要なクォータがあることを確認します。

    $ rosa verify quota [--region=<region>]

    出力例

    I: Validating AWS quota...
    I: AWS quota ok

    注記

    AWS クォータはリージョンによって異なる場合があります。エラーが発生した場合は、別のリージョンを試してください。

    クォータを増やす必要がある場合は、AWS コンソールに移動し、失敗したサービスについてクォータの増加を要求します。

    パーミッションとクォータチェックの両方にパスしたら、次のステップに進みます。

  7. クラスターデプロイメント用の AWS アカウントを準備します。

    1. 以下のコマンドを実行して、Red Hat および AWS の認証情報が正しく設定されていることを確認します。AWS アカウント ID、デフォルトのリージョンおよび ARN が予想される内容と一致していることを確認します。この時点では、OCM で始まる行を安全に無視することができます (OCM は OpenShift Cluster Manager の OCM を表します)。

      $ rosa whoami

      出力例

      AWS Account ID:               000000000000
      AWS Default Region:           us-east-1
      AWS ARN:                      arn:aws:iam::000000000000:user/hello
      OCM API:                      https://api.openshift.com
      OCM Account ID:               1DzGIdIhqEWyt8UUXQhSoWaaaaa
      OCM Account Name:             Your Name
      OCM Account Username:         you@domain.com
      OCM Account Email:            you@domain.com
      OCM Organization ID:          1HopHfA2hcmhup5gCr2uH5aaaaa
      OCM Organization Name:        Red Hat
      OCM Organization External ID: 0000000

  8. ROSA (rosa) CLI から OpenShift CLI (oc) バージョン 4.7.9 以降をインストールします。

    1. 以下のコマンドを入力して、最新バージョンの oc CLI をダウンロードします。

      $ rosa download openshift-client
    2. oc CLI をダウンロードした後に、これを展開し、パスに追加します。
    3. 以下のコマンドを実行して、oc CLI が正常にインストールされていることを確認します。

      $ rosa verify openshift-client

ロールの作成

これらの手順を完了したら、IAM および OIDC アクセスベースのロールをセットアップできます。

4.2. 次のステップ

4.3. 関連情報

第5章 STS を使用した ROSA クラスターの作成

5.1. STSを使用してROSAクラスターをすばやく作成

デフォルトオプションで Red Hat OpenShift Service on AWS CLI (rosa) を使用して、AWS Security Token Service (STS) を使用する OpenShift クラスターを迅速に作成します。

5.1.1. デフォルトオプションを使用した STS での ROSA クラスターの作成

Red Hat OpenShift Service on AWS CLI (rosa)を使用して、AWS Security Token Service (STS)を使用する OpenShift クラスターを迅速に作成できます。

さらに、auto モードを使用して、現在の AWS アカウントを使用して必要な AWS Identity and Access Management (IAM)リソースをすぐに作成できます。auto モードは、以下の手順で使用して、Operator ポリシーおよび OpenID Connect (OIDC)アイデンティティープロバイダーを含むアカウント全体の IAM ロールおよびポリシーをすぐに作成します。

重要

STS では、パブリックおよび AWS PrivateLink クラスターのみがサポートされます。通常の プライベートクラスター (PrivateLink 以外) は STS では使用できません。

注記

現時点で、AWS 共有 VPC は ROSA インストールではサポートされていません。

前提条件

  • STS で ROSA の AWS の前提条件を完了している。
  • 利用可能な AWS サービスクォータがある。
  • AWS コンソールで ROSA サービスを有効にしている。
  • 最新の AWS、ROSA、および oc CLI をインストールホストにインストールし、設定している。

手順

  1. Operator ポリシーを含む、必要なアカウント全体のロールおよびポリシーを作成します。

    $ rosa create account-roles --mode auto

    必要に応じて --version オプションを使用して、4.8 などの OpenShift マイナーリリースを指定できます。このオプションが含まれていない場合には、最新の安定版が想定されます。アカウント全体のロールおよびポリシーは、OpenShiftマイナーリリースバージョンに固有であり、後方互換性があります。

    注記

    auto モードを使用する場合は、任意で -y 引数を指定して対話式プロンプトを回避し、操作を自動的にチェックできます。

  2. デフォルトを使用して STS でクラスターを作成します。デフォルトを使用する場合は、最新の安定した OpenShift バージョンがインストールされます。

    $ rosa create cluster --cluster-name <cluster_name> --sts 1
    1
    <cluster_name> をクラスターの名前に置き換えます。
    重要

    Operator IAM ロールおよび OpenID Connect (OIDC) プロバイダーを作成し、クラスターの状態を ready に移行するには、以下の手順を実行する必要があります。

  3. クラスター固有の Operator IAM ロールを作成します。

    $ rosa create operator-roles --mode auto --cluster <cluster_name|cluster_id>
  4. クラスター Operator が認証に使用する OIDC プロバイダーを作成します。

    $ rosa create oidc-provider --mode auto --cluster <cluster_name|cluster_id>
  5. クラスターのステータスを確認します。

    $ rosa describe cluster --cluster <cluster_name|cluster_id>

    以下の State フィールドの変更は、クラスターインストールの進捗として出力に表示されます。

    • waiting (Waiting for OIDC configuration)
    • pending (Preparing account)
    • installing (DNS setup in progress)
    • installing
    • ready

      注記

      インストールが失敗した場合や、約 40 分後に State フィールドが ready に変わらない場合は、インストールのトラブルシューティングに関するドキュメントで詳細を確認してください。

  6. OpenShift インストーラーログを監視して、クラスター作成の進捗を追跡します。

    $ rosa logs install --cluster <cluster_name|cluster_id> --watch 1
    1
    --watch フラグを指定して、新規ログメッセージをインストールの進捗として監視します。この引数は任意です。

5.1.2. 次のステップ

5.1.3. 関連情報

5.2. カスタマイズを使用して STS を使用する ROSA クラスターの作成

Red Hat OpenShift Service on AWS CLII (rosa) を使用して、カスタマイズを使用して AWS Security Token Service (STS)で OpenShift クラスターを作成します。

5.2.1. STS を使用した ROSA クラスターのサポートについての考慮事項

AWS Security Token Service (STS)を使用する Red Hat OpenShift Service on AWS クラスターを作成するサポート対象の方法は、この製品ドキュメントで説明されている手順を使用する方法です。

Red Hat OpenShift Service on AWS CLI (rosa) で manual モードを使用し、STS リソースのインストールに必要な AWS Identity and Access Management (IAM) ポリシーファイルおよび aws コマンドを生成できます。

重要

ファイルおよび aws コマンドは、レビュー目的でのみ生成され、いずれの方法でも変更しないでください。Red Hat は、変更したバージョンのポリシーファイルまたは aws コマンドを使用してデプロイした ROSA クラスターのサポートを提供しません。

5.2.2. カスタマイズを使用して STS を使用するクラスターの作成

AWS Security Token Service (STS)を使用する Red Hat OpenShift Service on AWS (ROSA)クラスターを作成する場合は、インストールを対話的にカスタマイズできます。rosa create cluster --interactive をクラスターの作成時に実行すると、デプロイメントのカスタマイズを可能にする一連の対話式プロンプトが表示されます。詳細は、対話式クラスター作成モードリファレンスを参照してください。

STS でクラスターをデプロイする 2 つの rosa CLI モードがあります。

  • manual モード。このモードでは、rosa CLI は必要な AWS Identity and Access Management (IAM)ロールおよびポリシーおよび OpenID Connect (OIDC)プロバイダーを作成するために必要な aws コマンドを生成します。対応するポリシーの JSON ファイルも現在のディレクトリーに保存されます。これにより、aws コマンドを手動で実行する前に詳細を確認できます。
  • auto モード。このモードを使用すると、現在の AWS アカウントを使用して、必要な AWS Identity and Access Management (IAM)リソースをすぐに作成できます。
重要

STS では、パブリックおよび AWS PrivateLink クラスターのみがサポートされます。通常の プライベートクラスター (PrivateLink 以外) は STS では使用できません。

注記

現時点で、AWS 共有 VPC は ROSA インストールではサポートされていません。

前提条件

  • STS で ROSA の AWS の前提条件を完了している。
  • 利用可能な AWS サービスクォータがある。
  • AWS コンソールで ROSA サービスを有効にしている。
  • 最新の AWS、ROSA、および oc CLI をインストールホストにインストールし、設定している。
  • 暗号化にお客様が管理する AWS Key Management Service (KMS)キーを使用している場合は、対称 KMS キーを作成し、キー ID および Amazon Resource Name (ARN)がある。AWS KMS キーの作成に関する詳細は、AWS ドキュメント を参照してください。

手順

  1. Operator ポリシーを含む、必要なアカウント全体のロールおよびポリシーを作成します。

    1. 現在の作業ディレクトリーに IAM ポリシー JSON ファイルを作成し、確認用に aws CLI コマンドを実行します。

      $ rosa create account-roles --mode manual 1
      1
      manual モードは、アカウント全体のロールおよびポリシーの作成に必要な aws CLI コマンドおよび JSON ファイルを生成します。確認後、手動でコマンドを実行してリソースを作成する必要があります。

      必要に応じて --version オプションを使用して、4.8 などの OpenShift マイナーリリースを指定できます。このオプションが含まれていない場合には、最新の安定版が想定されます。アカウント全体のロールおよびポリシーは、OpenShiftマイナーリリースバージョンに固有であり、後方互換性があります。

    2. 確認後は、aws コマンドを手動で実行し、ロールおよびポリシーを作成します。または、--mode auto を使用して前述のコマンドを実行して、aws コマンドを即座に実行できます。
  2. (オプション)独自の AWS KMS キーを使用してコントロールプレーンのデータボリュームおよび永続ボリューム(PV)を暗号化する場合は、アカウント全体のインストーラーロールの ARN を KMS キーポリシーに追加します。

    1. KMS キーのキーポリシーをローカルマシンのファイルに保存します。次の例では、出力を現在の作業ディレクトリのkms-key-policy.jsonに保存します。

      $ aws kms get-key-policy --key-id <key_id_or_arn> --policy-name default --output text > kms-key-policy.json 1
      1
      <key_id_or_arn> を KMS キーの ID または ARN に置き換えます。
    2. 前述の手順で作成したアカウント全体のインストーラーロールの ARN を、ファイルの Statement.Principal.AWS セクションに追加します。以下の例では、デフォルトの ManagedOpenShift-Installer-Role ロールの ARN が追加されます。

      {
        "Version": "2012-10-17",
        "Id": "key-default-1",
        "Statement": [
          {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
              "AWS": [
                "arn:aws:iam::<aws_account_id>:root",
                "arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Installer-Role" 1
              ]
            },
            "Action": "kms:*",
            "Resource": "*"
          }
        ]
      }
      1
      ROSA クラスターの作成時に使用されるアカウント全体のロールの ARN を指定する必要があります。セクションに一覧表示される ARN はコンマで区切る必要があります。
    3. KMS キーポリシーに変更を適用します。

      $ aws kms put-key-policy --key-id <key_id_or_arn> \ 1
          --policy file://kms-key-policy.json \ 2
          --policy-name default
      1
      <key_id_or_arn> を KMS キーの ID または ARN に置き換えます。
      2
      ローカルファイルでキーポリシーを参照する場合は、file:// プレフィックスを含める必要があります。

      次の手順でクラスターを作成すると、KMS キーの ARN を参照できます。

  3. カスタムインストールオプションを使用して STS でクラスターを作成します。--interactive モードを使用して、カスタム設定を対話的に指定できます。

    $ rosa create cluster --interactive --sts

    出力例

    I: Interactive mode enabled.
    Any optional fields can be left empty and a default will be selected.
    ? Cluster name: <cluster_name>
    ? OpenShift version: 4.8.9 1
    I: Using arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Installer-Role for the Installer role 2
    I: Using arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-ControlPlane-Role for the ControlPlane role
    I: Using arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Worker-Role for the Worker role
    I: Using arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Support-Role for the Support role
    ? External ID (optional):
    ? Operator roles prefix: <cluster_name>-<random_string>
    ? Multiple availability zones (optional): No 3
    ? AWS region: us-east-1
    ? PrivateLink cluster (optional): No
    ? Install into an existing VPC (optional): No
    ? Enable Customer Managed key (optional): No 4
    ? Compute nodes instance type (optional):
    ? Enable autoscaling (optional): No
    ? Compute nodes: 2
    ? Machine CIDR: 10.0.0.0/16
    ? Service CIDR: 172.30.0.0/16
    ? Pod CIDR: 10.128.0.0/14
    ? Host prefix: 23
    ? Disable Workload monitoring (optional): No
    I: Creating cluster '<cluster_name>'
    I: To create this cluster again in the future, you can run:
       rosa create cluster --cluster-name <cluster_name> --role-arn arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Installer-Role --support-role-arn arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Support-Role --master-iam-role arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-ControlPlane-Role --worker-iam-role arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Worker-Role --operator-roles-prefix <cluster_name>-<random_string> --region us-east-1 --version 4.8.9 --compute-nodes 2 --machine-cidr 10.0.0.0/16 --service-cidr 172.30.0.0/16 --pod-cidr 10.128.0.0/14 --host-prefix 23 5
    I: To view a list of clusters and their status, run 'rosa list clusters'
    I: Cluster '<cluster_name>' has been created.
    I: Once the cluster is installed you will need to add an Identity Provider before you can login into the cluster. See 'rosa create idp --help' for more information.
    I: To determine when your cluster is Ready, run 'rosa describe cluster -c <cluster_name>'.
    I: To watch your cluster installation logs, run 'rosa logs install -c <cluster_name> --watch'.

    1
    クラスターの作成時に、一覧表示された OpenShift バージョン オプションには、4.8.9 などのメジャー、マイナー、およびパッチバージョンが含まれます。
    2
    クラスターバージョンのアカウントで、一致するアカウント全体のロールのセットが複数ある場合は、オプションのインタラクティブなリストが提供されます。
    3
    実稼働環境のワークロードには、複数のアベイラビリティーゾーンの使用が推奨されます。デフォルトは単一のアベイラビリティーゾーンです。
    4
    独自のAWS KMSキーを使用して、アプリケーションのコントロールプレーンデータボリュームとPVを暗号化する場合は、このオプションを有効にします。前述の手順でアカウント全体のロール ARN を追加した KMS キーの ARN を指定します。
    5
    この出力には、今後も同じ設定でクラスターを作成するのに実行できるカスタムコマンドが含まれます。
    注記

    --interactive モードを使用する代わりに、rosa create cluster の実行時にカスタマイズオプションを直接指定できます。rosa create cluster --help を実行して、利用可能な CLI オプションの一覧を表示します。

    重要

    Operator IAM ロールおよび OpenID Connect (OIDC) プロバイダーを作成し、クラスターの状態を ready に移行するには、以下の手順を実行する必要があります。

  4. クラスター固有の Operator IAM ロールを作成します。

    1. 現在の作業ディレクトリーに Operator IAM ポリシー JSON ファイルを作成し、確認用に aws CLI コマンドを実行します。

      $ rosa create operator-roles --mode manual --cluster <cluster_name|cluster_id> 1
      1
      manual モードは、Operator ロールの作成に必要な aws CLI コマンドおよび JSON ファイルを生成します。確認後、手動でコマンドを実行してリソースを作成する必要があります。
    2. 確認後は、aws コマンドを手動で実行し、Operator IAM ロールを作成し、管理対象 Operator ポリシーをそれらに割り当てます。または、--mode auto を使用して前述のコマンドを実行して、aws コマンドを即座に実行できます。
  5. クラスター Operator が認証に使用する OpenID Connect (OIDC) プロバイダーを作成します。

    $ rosa create oidc-provider --mode auto --cluster <cluster_name|cluster_id> 1
    1
    auto モードは、OIDC プロバイダーを作成する aws CLI コマンドを即時実行します。
  6. クラスターのステータスを確認します。

    $ rosa describe cluster --cluster <cluster_name|cluster_id>

    出力例

    Name:                       <cluster_name>
    ID:                         <cluster_id>
    External ID:                <external_id>
    OpenShift Version:          <version>
    Channel Group:              stable
    DNS:                        <cluster_name>.xxxx.p1.openshiftapps.com
    AWS Account:                <aws_account_id>
    API URL:                    https://api.<cluster_name>.xxxx.p1.openshiftapps.com:6443
    Console URL:                https://console-openshift-console.apps.<cluster_name>.xxxx.p1.openshiftapps.com
    Region:                     <aws_region>
    Multi-AZ:                   false
    Nodes:
     - Master:                  3
     - Infra:                   2
     - Compute:                 2
    Network:
     - Service CIDR:            172.30.0.0/16
     - Machine CIDR:            10.0.0.0/16
     - Pod CIDR:                10.128.0.0/14
     - Host Prefix:             /23
    STS Role ARN:               arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Installer-Role
    Support Role ARN:           arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Support-Role
    Instance IAM Roles:
     - Master:                  arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-ControlPlane-Role
     - Worker:                  arn:aws:iam::<aws_account_id>:role/ManagedOpenShift-Worker-Role
    Operator IAM Roles:
     - arn:aws:iam::<aws_account_id>:role/<cluster_name>-xxxx-openshift-ingress-operator-cloud-credentials
     - arn:aws:iam::<aws_account_id>:role/<cluster_name-xxxx-openshift-cluster-csi-drivers-ebs-cloud-credent
     - arn:aws:iam::<aws_account_id>:role/<cluster_name-xxxx-openshift-machine-api-aws-cloud-credentials
     - arn:aws:iam::<aws_account_id>:role/<cluster_name-xxxx-openshift-cloud-credential-operator-cloud-crede
     - arn:aws:iam::<aws_account_id>:role/<cluster_name-xxxx-openshift-image-registry-installer-cloud-creden
    State:                      ready
    Private:                    No
    Created:                    Oct  1 2021 08:12:25 UTC
    Details Page:               https://console.redhat.com/openshift/details/s/<subscription_id>
    OIDC Endpoint URL:          https://rh-oidc.s3.<aws_region>.amazonaws.com/<cluster_id>

    以下の State フィールドの変更は、クラスターインストールの進捗として出力に表示されます。

    • waiting (Waiting for OIDC configuration)
    • pending (Preparing account)
    • installing (DNS setup in progress)
    • installing
    • ready

      注記

      インストールが失敗した場合や、約 40 分後に State フィールドが ready に変わらない場合は、インストールのトラブルシューティングに関するドキュメントで詳細を確認してください。

  7. OpenShift インストーラーログを監視して、クラスター作成の進捗を追跡します。

    $ rosa logs install --cluster <cluster_name|cluster_id> --watch 1
    1
    --watch フラグを指定して、新規ログメッセージをインストールの進捗として監視します。この引数は任意です。

5.2.3. 次のステップ

5.2.4. 関連情報

5.3. STS を使用する ROSA クラスターの IAM リソースについて

5.3.1. STS を使用するクラスターの IAM リソースについて

AWS Security Token Service (STS) を使用する Red Hat OpenShift Service on AWS (ROSA) クラスターをデプロイするには、以下の AWS Identity Access Management (IAM) リソースを作成する必要があります。

  • ROSA サポート、インストール、コントロールプレーン、およびコンピュート機能に必要な STS パーミッションを提供する特定のアカウント全体の IAM ロールおよびポリシー。これには、アカウント全体の Operator ポリシーが含まれます。
  • ROSA クラスター Operator がコア OpenShift 機能を実行できるようにするクラスター固有の Operator IAM ロール。
  • クラスター Operator が認証に使用する OpenID Connect (OIDC) プロバイダー。

本書では、STS を使用する ROSA クラスターの作成時にデプロイする必要のある IAM リソースについての参考情報を提供します。また、rosa create コマンドで manual モードを使用する場合に生成される aws CLI コマンドも含まれます。

関連情報

5.3.2. アカウント全体の IAM ロールおよびポリシー参照

このセクションでは、Operator ポリシーを含む、STS を使用する ROSA デプロイメントに必要なアカウント全体の IAM ロールおよびポリシーについての詳細を提供します。また、ポリシーを定義する JSON ファイルも含まれます。

アカウント全体のロールおよびポリシーは、OpenShiftマイナーリリースバージョン(OpenShift 4.8 など)に固有であり、後方互換性があります。パッチバージョンに関係なく、同じマイナーバージョンの複数のクラスターにアカウント全体のロールおよびポリシーを再利用することで、必要な STS リソースを最小限に抑えることができます。

表5.1 ROSA インストーラーロール、ポリシー、およびポリシーファイル

リソース詳細

ManagedOpenShift-Installer-Role

ROSA インストーラーによって使用される IAM ロール。

ManagedOpenShift-Installer-Role-Policy

クラスターのインストールタスクを完了するのに必要なパーミッションを持つ ROSA インストーラーを提供するインライン IAM ポリシー。

例5.1 sts_installer_trust_policy.json (すべてのバージョン)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::710019948333:role/RH-Managed-OpenShift-Installer"
                ]
            },
            "Action": [
                "sts:AssumeRole"
            ]
        }
    ]
}

例5.2 sts_installer_permission_policy.json (4.7)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "autoscaling:DescribeAutoScalingGroups",
                "ec2:AllocateAddress",
                "ec2:AssociateAddress",
                "ec2:AssociateDhcpOptions",
                "ec2:AssociateRouteTable",
                "ec2:AttachInternetGateway",
                "ec2:AttachNetworkInterface",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CopyImage",
                "ec2:CreateDhcpOptions",
                "ec2:CreateInternetGateway",
                "ec2:CreateNatGateway",
                "ec2:CreateNetworkInterface",
                "ec2:CreateRoute",
                "ec2:CreateRouteTable",
                "ec2:CreateSecurityGroup",
                "ec2:CreateSubnet",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:CreateVpc",
                "ec2:CreateVpcEndpoint",
                "ec2:DeleteDhcpOptions",
                "ec2:DeleteInternetGateway",
                "ec2:DeleteNatGateway",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteRoute",
                "ec2:DeleteRouteTable",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteSnapshot",
                "ec2:DeleteSubnet",
                "ec2:DeleteTags",
                "ec2:DeleteVolume",
                "ec2:DeleteVpc",
                "ec2:DeleteVpcEndpoints",
                "ec2:DeregisterImage",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeImages",
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeInstanceCreditSpecifications",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeNatGateways",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribePrefixLists",
                "ec2:DescribeRegions",
                "ec2:DescribeReservedInstancesOfferings",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeVolumes",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcClassicLink",
                "ec2:DescribeVpcClassicLinkDnsSupport",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeVpcs",
                "ec2:DetachInternetGateway",
                "ec2:DisassociateRouteTable",
                "ec2:GetEbsDefaultKmsKeyId",
                "ec2:ModifyInstanceAttribute",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:ModifySubnetAttribute",
                "ec2:ModifyVpcAttribute",
                "ec2:ReleaseAddress",
                "ec2:ReplaceRouteTableAssociation",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress",
                "ec2:RunInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances",
                "elasticloadbalancing:AddTags",
                "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer",
                "elasticloadbalancing:AttachLoadBalancerToSubnets",
                "elasticloadbalancing:ConfigureHealthCheck",
                "elasticloadbalancing:CreateListener",
                "elasticloadbalancing:CreateLoadBalancer",
                "elasticloadbalancing:CreateLoadBalancerListeners",
                "elasticloadbalancing:CreateTargetGroup",
                "elasticloadbalancing:DeleteLoadBalancer",
                "elasticloadbalancing:DeleteTargetGroup",
                "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:DescribeInstanceHealth",
                "elasticloadbalancing:DescribeListeners",
                "elasticloadbalancing:DescribeLoadBalancerAttributes",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeTags",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "elasticloadbalancing:ModifyLoadBalancerAttributes",
                "elasticloadbalancing:ModifyTargetGroup",
                "elasticloadbalancing:ModifyTargetGroupAttributes",
                "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
                "elasticloadbalancing:RegisterTargets",
                "elasticloadbalancing:SetLoadBalancerPoliciesOfListener",
                "iam:AddRoleToInstanceProfile",
                "iam:CreateInstanceProfile",
                "iam:DeleteInstanceProfile",
                "iam:GetInstanceProfile",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:GetUser",
                "iam:ListAttachedRolePolicies",
                "iam:ListInstanceProfiles",
                "iam:ListInstanceProfilesForRole",
                "iam:ListRolePolicies",
                "iam:ListRoles",
                "iam:ListUserPolicies",
                "iam:ListUsers",
                "iam:PassRole",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:SimulatePrincipalPolicy",
                "iam:TagRole",
                "iam:UntagRole",
                "route53:ChangeResourceRecordSets",
                "route53:ChangeTagsForResource",
                "route53:CreateHostedZone",
                "route53:DeleteHostedZone",
                "route53:GetChange",
                "route53:GetHostedZone",
                "route53:ListHostedZones",
                "route53:ListHostedZonesByName",
                "route53:ListResourceRecordSets",
                "route53:ListTagsForResource",
                "route53:UpdateHostedZoneComment",
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "s3:GetAccelerateConfiguration",
                "s3:GetBucketAcl",
                "s3:GetBucketCORS",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketObjectLockConfiguration",
                "s3:GetBucketRequestPayment",
                "s3:GetBucketTagging",
                "s3:GetBucketVersioning",
                "s3:GetBucketWebsite",
                "s3:GetEncryptionConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:GetObjectVersion",
                "s3:GetReplicationConfiguration",
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:PutBucketAcl",
                "s3:PutBucketTagging",
                "s3:PutEncryptionConfiguration",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging",
                "sts:AssumeRole",
                "sts:AssumeRoleWithWebIdentity",
                "sts:GetCallerIdentity",
                "tag:GetResources",
                "tag:UntagResources",
                "ec2:CreateVpcEndpointServiceConfiguration",
                "ec2:DeleteVpcEndpointServiceConfigurations",
                "ec2:DescribeVpcEndpointServiceConfigurations",
                "ec2:DescribeVpcEndpointServicePermissions",
                "ec2:DescribeVpcEndpointServices",
                "ec2:ModifyVpcEndpointServicePermissions"
            ],
            "Resource": "*"
        }
    ]
}

例5.3 sts_installer_permission_policy.json (4.8)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "autoscaling:DescribeAutoScalingGroups",
                "ec2:AllocateAddress",
                "ec2:AssociateAddress",
                "ec2:AssociateDhcpOptions",
                "ec2:AssociateRouteTable",
                "ec2:AttachInternetGateway",
                "ec2:AttachNetworkInterface",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CopyImage",
                "ec2:CreateDhcpOptions",
                "ec2:CreateInternetGateway",
                "ec2:CreateNatGateway",
                "ec2:CreateNetworkInterface",
                "ec2:CreateRoute",
                "ec2:CreateRouteTable",
                "ec2:CreateSecurityGroup",
                "ec2:CreateSubnet",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:CreateVpc",
                "ec2:CreateVpcEndpoint",
                "ec2:DeleteDhcpOptions",
                "ec2:DeleteInternetGateway",
                "ec2:DeleteNatGateway",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteRoute",
                "ec2:DeleteRouteTable",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteSnapshot",
                "ec2:DeleteSubnet",
                "ec2:DeleteTags",
                "ec2:DeleteVolume",
                "ec2:DeleteVpc",
                "ec2:DeleteVpcEndpoints",
                "ec2:DeregisterImage",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeImages",
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeInstanceCreditSpecifications",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeNatGateways",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribePrefixLists",
                "ec2:DescribeRegions",
                "ec2:DescribeReservedInstancesOfferings",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeVolumes",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcClassicLink",
                "ec2:DescribeVpcClassicLinkDnsSupport",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeVpcs",
                "ec2:DetachInternetGateway",
                "ec2:DisassociateRouteTable",
                "ec2:GetEbsDefaultKmsKeyId",
                "ec2:ModifyInstanceAttribute",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:ModifySubnetAttribute",
                "ec2:ModifyVpcAttribute",
                "ec2:ReleaseAddress",
                "ec2:ReplaceRouteTableAssociation",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress",
                "ec2:RunInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances",
                "elasticloadbalancing:AddTags",
                "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer",
                "elasticloadbalancing:AttachLoadBalancerToSubnets",
                "elasticloadbalancing:ConfigureHealthCheck",
                "elasticloadbalancing:CreateListener",
                "elasticloadbalancing:CreateLoadBalancer",
                "elasticloadbalancing:CreateLoadBalancerListeners",
                "elasticloadbalancing:CreateTargetGroup",
                "elasticloadbalancing:DeleteLoadBalancer",
                "elasticloadbalancing:DeleteTargetGroup",
                "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:DescribeInstanceHealth",
                "elasticloadbalancing:DescribeListeners",
                "elasticloadbalancing:DescribeLoadBalancerAttributes",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeTags",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "elasticloadbalancing:ModifyLoadBalancerAttributes",
                "elasticloadbalancing:ModifyTargetGroup",
                "elasticloadbalancing:ModifyTargetGroupAttributes",
                "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
                "elasticloadbalancing:RegisterTargets",
                "elasticloadbalancing:SetLoadBalancerPoliciesOfListener",
                "iam:AddRoleToInstanceProfile",
                "iam:CreateInstanceProfile",
                "iam:DeleteInstanceProfile",
                "iam:GetInstanceProfile",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:GetUser",
                "iam:ListAttachedRolePolicies",
                "iam:ListInstanceProfiles",
                "iam:ListInstanceProfilesForRole",
                "iam:ListRolePolicies",
                "iam:ListRoles",
                "iam:ListUserPolicies",
                "iam:ListUsers",
                "iam:PassRole",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:SimulatePrincipalPolicy",
                "iam:TagRole",
                "iam:UntagRole",
                "route53:ChangeResourceRecordSets",
                "route53:ChangeTagsForResource",
                "route53:CreateHostedZone",
                "route53:DeleteHostedZone",
                "route53:GetChange",
                "route53:GetHostedZone",
                "route53:ListHostedZones",
                "route53:ListHostedZonesByName",
                "route53:ListResourceRecordSets",
                "route53:ListTagsForResource",
                "route53:UpdateHostedZoneComment",
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "s3:GetAccelerateConfiguration",
                "s3:GetBucketAcl",
                "s3:GetBucketCORS",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketObjectLockConfiguration",
                "s3:GetBucketRequestPayment",
                "s3:GetBucketTagging",
                "s3:GetBucketVersioning",
                "s3:GetBucketWebsite",
                "s3:GetEncryptionConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:GetObjectVersion",
                "s3:GetReplicationConfiguration",
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:PutBucketAcl",
                "s3:PutBucketTagging",
                "s3:PutEncryptionConfiguration",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging",
                "sts:AssumeRole",
                "sts:AssumeRoleWithWebIdentity",
                "sts:GetCallerIdentity",
                "tag:GetResources",
                "tag:UntagResources",
                "ec2:CreateVpcEndpointServiceConfiguration",
                "ec2:DeleteVpcEndpointServiceConfigurations",
                "ec2:DescribeVpcEndpointServiceConfigurations",
                "ec2:DescribeVpcEndpointServicePermissions",
                "ec2:DescribeVpcEndpointServices",
                "ec2:ModifyVpcEndpointServicePermissions"
            ],
            "Resource": "*"
        }
    ]
}

表5.2 ROSA コントロールプレーンのロール、ポリシー、およびポリシーファイル

リソース説明

ManagedOpenShift-ControlPlane-Role

ROSA コントロールプレーンによって使用される IAM ロール。

ManagedOpenShift-ControlPlane-Role-Policy

コンポーネントの管理に必要なパーミッションを持つ ROSA コントロールプレーンを提供するインライン IAM ポリシー。

例5.4 sts_instance_controlplane_trust_policy.json (すべてのバージョン)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "ec2.amazonaws.com"
                ]
            },
            "Action": [
                "sts:AssumeRole"
            ]
        }
    ]
}

例5.5 sts_instance_controlplane_permission_policy.json (4.7)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachVolume",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteVolume",
                "ec2:Describe*",
                "ec2:DetachVolume",
                "ec2:ModifyInstanceAttribute",
                "ec2:ModifyVolume",
                "ec2:RevokeSecurityGroupIngress",
                "elasticloadbalancing:AddTags",
                "elasticloadbalancing:AttachLoadBalancerToSubnets",
                "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer",
                "elasticloadbalancing:CreateListener",
                "elasticloadbalancing:CreateLoadBalancer",
                "elasticloadbalancing:CreateLoadBalancerPolicy",
                "elasticloadbalancing:CreateLoadBalancerListeners",
                "elasticloadbalancing:CreateTargetGroup",
                "elasticloadbalancing:ConfigureHealthCheck",
                "elasticloadbalancing:DeleteListener",
                "elasticloadbalancing:DeleteLoadBalancer",
                "elasticloadbalancing:DeleteLoadBalancerListeners",
                "elasticloadbalancing:DeleteTargetGroup",
                "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:Describe*",
                "elasticloadbalancing:DetachLoadBalancerFromSubnets",
                "elasticloadbalancing:ModifyListener",
                "elasticloadbalancing:ModifyLoadBalancerAttributes",
                "elasticloadbalancing:ModifyTargetGroup",
                "elasticloadbalancing:ModifyTargetGroupAttributes",
                "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
                "elasticloadbalancing:RegisterTargets",
                "elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer",
                "elasticloadbalancing:SetLoadBalancerPoliciesOfListener",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}

例5.6 sts_instance_controlplane_permission_policy.json (4.8)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachVolume",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteVolume",
                "ec2:Describe*",
                "ec2:DetachVolume",
                "ec2:ModifyInstanceAttribute",
                "ec2:ModifyVolume",
                "ec2:RevokeSecurityGroupIngress",
                "elasticloadbalancing:AddTags",
                "elasticloadbalancing:AttachLoadBalancerToSubnets",
                "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer",
                "elasticloadbalancing:CreateListener",
                "elasticloadbalancing:CreateLoadBalancer",
                "elasticloadbalancing:CreateLoadBalancerPolicy",
                "elasticloadbalancing:CreateLoadBalancerListeners",
                "elasticloadbalancing:CreateTargetGroup",
                "elasticloadbalancing:ConfigureHealthCheck",
                "elasticloadbalancing:DeleteListener",
                "elasticloadbalancing:DeleteLoadBalancer",
                "elasticloadbalancing:DeleteLoadBalancerListeners",
                "elasticloadbalancing:DeleteTargetGroup",
                "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:Describe*",
                "elasticloadbalancing:DetachLoadBalancerFromSubnets",
                "elasticloadbalancing:ModifyListener",
                "elasticloadbalancing:ModifyLoadBalancerAttributes",
                "elasticloadbalancing:ModifyTargetGroup",
                "elasticloadbalancing:ModifyTargetGroupAttributes",
                "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
                "elasticloadbalancing:RegisterTargets",
                "elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer",
                "elasticloadbalancing:SetLoadBalancerPoliciesOfListener",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}

表5.3 ROSA コンピュートノードロール、ポリシー、およびポリシーファイル

リソース説明

ManagedOpenShift-Worker-Role

ROSA コンピュートインスタンスによって使用される IAM ロール。

ManagedOpenShift-Worker-Role-Policy

コンポーネントの管理に必要なパーミッションを持つ ROSA コンピュートインスタンスを提供するインライン IAM ポリシー。

例5.7 sts_instance_worker_trust_policy.json (すべてのバージョン)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "ec2.amazonaws.com"
                ]
            },
            "Action": [
                "sts:AssumeRole"
            ]
        }
    ]
}

例5.8 sts_instance_worker_permission_policy.json (4.7)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeRegions"
            ],
            "Resource": "*"
        }
    ]
}

例5.9 sts_instance_worker_permission_policy.json (4.8)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeRegions"
            ],
            "Resource": "*"
        }
    ]
}

表5.4 ROSA サポートロール、ポリシー、およびポリシーファイル

リソース説明

ManagedOpenShift-Support-Role

Red Hat Site Reliability Engineering (SRE) サポートチームによって使用される IAM ロール。

ManagedOpenShift-Support-Role-Policy

ROSA クラスターをサポートするのに必要なパーミッションを持つ Red Hat SRE サポートチームを提供するインライン IAM ポリシー。

例5.10 sts_support_trust_policy.json (すべてのバージョン)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::710019948333:role/RH-Technical-Support-Access"
                ]
            },
            "Action": [
                "sts:AssumeRole"
            ]
        }
    ]
}

例5.11 sts_support_permission_policy.json (4.7)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudtrail:DescribeTrails",
                "cloudtrail:LookupEvents",
                "cloudwatch:GetMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "ec2:CopySnapshot",
                "ec2:CreateSnapshot",
                "ec2:CreateSnapshots",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeAddressesAttribute",
                "ec2:DescribeAggregateIdFormat",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeByoipCidrs",
                "ec2:DescribeCapacityReservations",
                "ec2:DescribeCarrierGateways",
                "ec2:DescribeClassicLinkInstances",
                "ec2:DescribeClientVpnAuthorizationRules",
                "ec2:DescribeClientVpnConnections",
                "ec2:DescribeClientVpnEndpoints",
                "ec2:DescribeClientVpnRoutes",
                "ec2:DescribeClientVpnTargetNetworks",
                "ec2:DescribeCoipPools",
                "ec2:DescribeCustomerGateways",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeEgressOnlyInternetGateways",
                "ec2:DescribeIamInstanceProfileAssociations",
                "ec2:DescribeIdFormat",
                "ec2:DescribeIdentityIdFormat",
                "ec2:DescribeImageAttribute",
                "ec2:DescribeImages",
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstanceTypeOfferings",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeInstances",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeIpv6Pools",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations",
                "ec2:DescribeLocalGatewayRouteTableVpcAssociations",
                "ec2:DescribeLocalGatewayRouteTables",
                "ec2:DescribeLocalGatewayVirtualInterfaceGroups",
                "ec2:DescribeLocalGatewayVirtualInterfaces",
                "ec2:DescribeLocalGateways",
                "ec2:DescribeNatGateways",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribePlacementGroups",
                "ec2:DescribePrefixLists",
                "ec2:DescribePrincipalIdFormat",
                "ec2:DescribePublicIpv4Pools",
                "ec2:DescribeRegions",
                "ec2:DescribeReservedInstances",
                "ec2:DescribeRouteTables",
                "ec2:DescribeScheduledInstances",
                "ec2:DescribeSecurityGroupReferences",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshotAttribute",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSpotFleetInstances",
                "ec2:DescribeStaleSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeTransitGatewayAttachments",
                "ec2:DescribeTransitGatewayConnectPeers",
                "ec2:DescribeTransitGatewayConnects",
                "ec2:DescribeTransitGatewayMulticastDomains",
                "ec2:DescribeTransitGatewayPeeringAttachments",
                "ec2:DescribeTransitGatewayRouteTables",
                "ec2:DescribeTransitGatewayVpcAttachments",
                "ec2:DescribeTransitGateways",
                "ec2:DescribeVolumeAttribute",
                "ec2:DescribeVolumeStatus",
                "ec2:DescribeVolumes",
                "ec2:DescribeVolumesModifications",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcClassicLink",
                "ec2:DescribeVpcClassicLinkDnsSupport",
                "ec2:DescribeVpcEndpointConnectionNotifications",
                "ec2:DescribeVpcEndpointConnections",
                "ec2:DescribeVpcEndpointServiceConfigurations",
                "ec2:DescribeVpcEndpointServicePermissions",
                "ec2:DescribeVpcEndpointServices",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeVpcPeeringConnections",
                "ec2:DescribeVpcs",
                "ec2:DescribeVpnConnections",
                "ec2:DescribeVpnGateways",
                "ec2:GetAssociatedIpv6PoolCidrs",
                "ec2:GetTransitGatewayAttachmentPropagations",
                "ec2:GetTransitGatewayMulticastDomainAssociations",
                "ec2:GetTransitGatewayPrefixListReferences",
                "ec2:GetTransitGatewayRouteTableAssociations",
                "ec2:GetTransitGatewayRouteTablePropagations",
                "ec2:RebootInstances",
                "ec2:SearchLocalGatewayRoutes",
                "ec2:SearchTransitGatewayMulticastGroups",
                "ec2:SearchTransitGatewayRoutes",
                "ec2:StartInstances",
                "ec2:TerminateInstances",
                "elasticloadbalancing:ConfigureHealthCheck",
                "elasticloadbalancing:DescribeAccountLimits",
                "elasticloadbalancing:DescribeInstanceHealth",
                "elasticloadbalancing:DescribeListenerCertificates",
                "elasticloadbalancing:DescribeListeners",
                "elasticloadbalancing:DescribeLoadBalancerAttributes",
                "elasticloadbalancing:DescribeLoadBalancerAttributes",
                "elasticloadbalancing:DescribeLoadBalancerPolicies",
                "elasticloadbalancing:DescribeLoadBalancerPolicyTypes",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeRules",
                "elasticloadbalancing:DescribeSSLPolicies",
                "elasticloadbalancing:DescribeTags",
                "elasticloadbalancing:DescribeTags",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "route53:GetHostedZone",
                "route53:GetHostedZoneCount",
                "route53:ListHostedZones",
                "route53:ListHostedZonesByName",
                "route53:ListResourceRecordSets",
                "s3:GetBucketTagging",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": [
                "arn:aws:s3:::managed-velero*",
                "arn:aws:s3:::*image-registry*"
            ]
        }
    ]
}

例5.12 sts_support_permission_policy.json (4.8)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudtrail:DescribeTrails",
                "cloudtrail:LookupEvents",
                "cloudwatch:GetMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "ec2:CopySnapshot",
                "ec2:CreateSnapshot",
                "ec2:CreateSnapshots",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeAddressesAttribute",
                "ec2:DescribeAggregateIdFormat",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeByoipCidrs",
                "ec2:DescribeCapacityReservations",
                "ec2:DescribeCarrierGateways",
                "ec2:DescribeClassicLinkInstances",
                "ec2:DescribeClientVpnAuthorizationRules",
                "ec2:DescribeClientVpnConnections",
                "ec2:DescribeClientVpnEndpoints",
                "ec2:DescribeClientVpnRoutes",
                "ec2:DescribeClientVpnTargetNetworks",
                "ec2:DescribeCoipPools",
                "ec2:DescribeCustomerGateways",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeEgressOnlyInternetGateways",
                "ec2:DescribeIamInstanceProfileAssociations",
                "ec2:DescribeIdFormat",
                "ec2:DescribeIdentityIdFormat",
                "ec2:DescribeImageAttribute",
                "ec2:DescribeImages",
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstanceTypeOfferings",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeInstances",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeIpv6Pools",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations",
                "ec2:DescribeLocalGatewayRouteTableVpcAssociations",
                "ec2:DescribeLocalGatewayRouteTables",
                "ec2:DescribeLocalGatewayVirtualInterfaceGroups",
                "ec2:DescribeLocalGatewayVirtualInterfaces",
                "ec2:DescribeLocalGateways",
                "ec2:DescribeNatGateways",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribePlacementGroups",
                "ec2:DescribePrefixLists",
                "ec2:DescribePrincipalIdFormat",
                "ec2:DescribePublicIpv4Pools",
                "ec2:DescribeRegions",
                "ec2:DescribeReservedInstances",
                "ec2:DescribeRouteTables",
                "ec2:DescribeScheduledInstances",
                "ec2:DescribeSecurityGroupReferences",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshotAttribute",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSpotFleetInstances",
                "ec2:DescribeStaleSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeTransitGatewayAttachments",
                "ec2:DescribeTransitGatewayConnectPeers",
                "ec2:DescribeTransitGatewayConnects",
                "ec2:DescribeTransitGatewayMulticastDomains",
                "ec2:DescribeTransitGatewayPeeringAttachments",
                "ec2:DescribeTransitGatewayRouteTables",
                "ec2:DescribeTransitGatewayVpcAttachments",
                "ec2:DescribeTransitGateways",
                "ec2:DescribeVolumeAttribute",
                "ec2:DescribeVolumeStatus",
                "ec2:DescribeVolumes",
                "ec2:DescribeVolumesModifications",
                "ec2:DescribeVpcAttribute",
                "ec2:DescribeVpcClassicLink",
                "ec2:DescribeVpcClassicLinkDnsSupport",
                "ec2:DescribeVpcEndpointConnectionNotifications",
                "ec2:DescribeVpcEndpointConnections",
                "ec2:DescribeVpcEndpointServiceConfigurations",
                "ec2:DescribeVpcEndpointServicePermissions",
                "ec2:DescribeVpcEndpointServices",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeVpcPeeringConnections",
                "ec2:DescribeVpcs",
                "ec2:DescribeVpnConnections",
                "ec2:DescribeVpnGateways",
                "ec2:GetAssociatedIpv6PoolCidrs",
                "ec2:GetTransitGatewayAttachmentPropagations",
                "ec2:GetTransitGatewayMulticastDomainAssociations",
                "ec2:GetTransitGatewayPrefixListReferences",
                "ec2:GetTransitGatewayRouteTableAssociations",
                "ec2:GetTransitGatewayRouteTablePropagations",
                "ec2:RebootInstances",
                "ec2:SearchLocalGatewayRoutes",
                "ec2:SearchTransitGatewayMulticastGroups",
                "ec2:SearchTransitGatewayRoutes",
                "ec2:StartInstances",
                "ec2:TerminateInstances",
                "elasticloadbalancing:ConfigureHealthCheck",
                "elasticloadbalancing:DescribeAccountLimits",
                "elasticloadbalancing:DescribeInstanceHealth",
                "elasticloadbalancing:DescribeListenerCertificates",
                "elasticloadbalancing:DescribeListeners",
                "elasticloadbalancing:DescribeLoadBalancerAttributes",
                "elasticloadbalancing:DescribeLoadBalancerAttributes",
                "elasticloadbalancing:DescribeLoadBalancerPolicies",
                "elasticloadbalancing:DescribeLoadBalancerPolicyTypes",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeRules",
                "elasticloadbalancing:DescribeSSLPolicies",
                "elasticloadbalancing:DescribeTags",
                "elasticloadbalancing:DescribeTags",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "route53:GetHostedZone",
                "route53:GetHostedZoneCount",
                "route53:ListHostedZones",
                "route53:ListHostedZonesByName",
                "route53:ListResourceRecordSets",
                "s3:GetBucketTagging",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": [
                "arn:aws:s3:::managed-velero*",
                "arn:aws:s3:::*image-registry*"
            ]
        }
    ]
}

表5.5 ROSA Ingress Operator IAM ポリシーおよびポリシーファイル

リソース説明

ManagedOpenShift-openshift-ingress-operator-cloud-credentials

クラスターへの外部アクセスを管理するのに必要なパーミッションを持つ ROSA Ingress Operator を提供する管理対象 IAM ポリシー。

例5.13 openshift_ingress_operator_cloud_credentials_policy.json (4.7)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticloadbalancing:DescribeLoadBalancers",
        "route53:ListHostedZones",
        "route53:ChangeResourceRecordSets",
        "tag:GetResources"
      ],
      "Resource": "*"
    }
  ]
}

例5.14 openshift_ingress_operator_cloud_credentials_policy.json (4.8)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticloadbalancing:DescribeLoadBalancers",
        "route53:ListHostedZones",
        "route53:ChangeResourceRecordSets",
        "tag:GetResources"
      ],
      "Resource": "*"
    }
  ]
}

表5.6 ROSA バックエンドストレージ IAM ポリシーおよびポリシーファイル

リソース説明

ManagedOpenShift-openshift-cluster-csi-drivers-ebs-cloud-credentials

Container Storage Interface (CSI) でバックエンドストレージを管理するのに ROSA が必要とする管理対象 IAM ポリシー。

例5.15 openshift_cluster_csi_drivers_ebs_cloud_credentials_policy.json (4.7)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AttachVolume",
        "ec2:CreateSnapshot",
        "ec2:CreateTags",
        "ec2:CreateVolume",
        "ec2:DeleteSnapshot",
        "ec2:DeleteTags",
        "ec2:DeleteVolume",
        "ec2:DescribeInstances",
        "ec2:DescribeSnapshots",
        "ec2:DescribeTags",
        "ec2:DescribeVolumes",
        "ec2:DescribeVolumesModifications",
        "ec2:DetachVolume",
        "ec2:ModifyVolume"
      ],
      "Resource": "*"
    }
  ]
}

例5.16 openshift_cluster_csi_drivers_ebs_cloud_credentials_policy.json (4.8)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AttachVolume",
        "ec2:CreateSnapshot",
        "ec2:CreateTags",
        "ec2:CreateVolume",
        "ec2:DeleteSnapshot",
        "ec2:DeleteTags",
        "ec2:DeleteVolume",
        "ec2:DescribeInstances",
        "ec2:DescribeSnapshots",
        "ec2:DescribeTags",
        "ec2:DescribeVolumes",
        "ec2:DescribeVolumesModifications",
        "ec2:DetachVolume",
        "ec2:ModifyVolume"
      ],
      "Resource": "*"
    }
  ]
}

表5.7 ROSA Machine Config Operator ポリシーおよびポリシーファイル

リソース詳細

ManagedOpenShift-openshift-machine-api-aws-cloud-credentials

コアクラスター機能の実行に必要なパーミッションと共に ROSA Machine Config Operator を提供する管理対象 IAM ポリシー。

例5.17 openshift_machine_api_aws_cloud_credentials_policy.json (4.7)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:RunInstances",
        "ec2:TerminateInstances",
        "elasticloadbalancing:DescribeLoadBalancers",
        "elasticloadbalancing:DescribeTargetGroups",
        "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
        "elasticloadbalancing:RegisterTargets",
        "iam:PassRole",
        "iam:CreateServiceLinkedRole"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlainText",
        "kms:DescribeKey"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:RevokeGrant",
        "kms:CreateGrant",
        "kms:ListGrants"
      ],
      "Resource": "*",
      "Condition": {
        "Bool": {
          "kms:GrantIsForAWSResource": true
        }
      }
    }
  ]
}

例5.18 openshift_machine_api_aws_cloud_credentials_policy.json (4.8)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:RunInstances",
        "ec2:TerminateInstances",
        "elasticloadbalancing:DescribeLoadBalancers",
        "elasticloadbalancing:DescribeTargetGroups",
        "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
        "elasticloadbalancing:RegisterTargets",
        "elasticloadbalancing:DeregisterTargets",
        "iam:PassRole",
        "iam:CreateServiceLinkedRole"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlainText",
        "kms:DescribeKey"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:RevokeGrant",
        "kms:CreateGrant",
        "kms:ListGrants"
      ],
      "Resource": "*",
      "Condition": {
        "Bool": {
          "kms:GrantIsForAWSResource": true
        }
      }
    }
  ]
}

表5.8 ROSA Cloud Credential Operator ポリシーおよびポリシーファイル

リソース説明

ManagedOpenShift-openshift-cloud-credential-operator-cloud-credentials

クラウドプロバイダーの認証情報の管理に必要なパーミッションと共に ROSA Cloud Credential Operator を提供する管理対象 IAM ポリシー。

例5.19 openshift_cloud_credential_operator_cloud_credential_operator_iam_ro_creds_policy.json (4.7)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:GetUser",
        "iam:GetUserPolicy",
        "iam:ListAccessKeys"
      ],
      "Resource": "*"
    }
  ]
}

例5.20 openshift_cloud_credential_operator_cloud_credential_operator_iam_ro_creds_policy.json (4.8)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:GetUser",
        "iam:GetUserPolicy",
        "iam:ListAccessKeys"
      ],
      "Resource": "*"
    }
  ]
}

表5.9 ROSA Image Registry Operator ポリシーおよびポリシーファイル

リソース説明

ManagedOpenShift-openshift-image-registry-installer-cloud-credentials

クラスターの AWS S3 で内部レジストリーストレージを管理するために必要なパーミッションを持つ ROSA イメージレジストリー Operator を提供するマネージド IAM ポリシー。

例5.21 openshift_image_registry_installer_cloud_credentials_policy.json (4.7)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:CreateBucket",
        "s3:DeleteBucket",
        "s3:PutBucketTagging",
        "s3:GetBucketTagging",
        "s3:PutBucketPublicAccessBlock",
        "s3:GetBucketPublicAccessBlock",
        "s3:PutEncryptionConfiguration",
        "s3:GetEncryptionConfiguration",
        "s3:PutLifecycleConfiguration",
        "s3:GetLifecycleConfiguration",
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:ListBucketMultipartUploads",
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts"
      ],
      "Resource": "*"
    }
  ]
}

例5.22 openshift_image_registry_installer_cloud_credentials_policy.json (4.8)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:CreateBucket",
        "s3:DeleteBucket",
        "s3:PutBucketTagging",
        "s3:GetBucketTagging",
        "s3:PutBucketPublicAccessBlock",
        "s3:GetBucketPublicAccessBlock",
        "s3:PutEncryptionConfiguration",
        "s3:GetEncryptionConfiguration",
        "s3:PutLifecycleConfiguration",
        "s3:GetLifecycleConfiguration",
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:ListBucketMultipartUploads",
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts"
      ],
      "Resource": "*"
    }
  ]
}

関連情報

5.3.2.1. アカウント全体の IAM ロールおよびポリシー AWS CLI リファレンス

このセクションでは、manual モードを使用して以下の rosa コマンドを実行する際にターミナルに表示される aws CLI コマンドを一覧表示します。

$ rosa create account-roles --mode manual
注記

manual モードを使用すると、aws コマンドは確認用に端末に出力されます。aws コマンドを確認したら、手動で実行する必要があります。または、rosa create コマンドで --mode auto を指定して、aws コマンドを即時に実行することができます。

コマンド出力

aws iam create-role \
	--role-name ManagedOpenShift-Installer-Role \
	--assume-role-policy-document file://sts_installer_trust_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=rosa_role_type,Value=installer

aws iam put-role-policy \
	--role-name ManagedOpenShift-Installer-Role \
	--policy-name ManagedOpenShift-Installer-Role-Policy \
	--policy-document file://sts_installer_permission_policy.json

aws iam create-role \
	--role-name ManagedOpenShift-ControlPlane-Role \
	--assume-role-policy-document file://sts_instance_controlplane_trust_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=rosa_role_type,Value=instance_controlplane

aws iam put-role-policy \
	--role-name ManagedOpenShift-ControlPlane-Role \
	--policy-name ManagedOpenShift-ControlPlane-Role-Policy \
	--policy-document file://sts_instance_controlplane_permission_policy.json

aws iam create-role \
	--role-name ManagedOpenShift-Worker-Role \
	--assume-role-policy-document file://sts_instance_worker_trust_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=rosa_role_type,Value=instance_worker

aws iam put-role-policy \
	--role-name ManagedOpenShift-Worker-Role \
	--policy-name ManagedOpenShift-Worker-Role-Policy \
	--policy-document file://sts_instance_worker_permission_policy.json

aws iam create-role \
	--role-name ManagedOpenShift-Support-Role \
	--assume-role-policy-document file://sts_support_trust_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=rosa_role_type,Value=support

aws iam put-role-policy \
	--role-name ManagedOpenShift-Support-Role \
	--policy-name ManagedOpenShift-Support-Role-Policy \
	--policy-document file://sts_support_permission_policy.json

aws iam create-policy \
	--policy-name ManagedOpenShift-openshift-ingress-operator-cloud-credentials \
	--policy-document file://openshift_ingress_operator_cloud_credentials_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-ingress-operator Key=operator_name,Value=cloud-credentials

aws iam create-policy \
	--policy-name ManagedOpenShift-openshift-cluster-csi-drivers-ebs-cloud-credent \
	--policy-document file://openshift_cluster_csi_drivers_ebs_cloud_credentials_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-cluster-csi-drivers Key=operator_name,Value=ebs-cloud-credentials

aws iam create-policy \
	--policy-name ManagedOpenShift-openshift-machine-api-aws-cloud-credentials \
	--policy-document file://openshift_machine_api_aws_cloud_credentials_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-machine-api Key=operator_name,Value=aws-cloud-credentials

aws iam create-policy \
	--policy-name ManagedOpenShift-openshift-cloud-credential-operator-cloud-crede \
	--policy-document file://openshift_cloud_credential_operator_cloud_credential_operator_iam_ro_creds_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-cloud-credential-operator Key=operator_name,Value=cloud-credential-operator-iam-ro-creds

aws iam create-policy \
	--policy-name ManagedOpenShift-openshift-image-registry-installer-cloud-creden \
	--policy-document file://openshift_image_registry_installer_cloud_credentials_policy.json \
	--tags Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value=ManagedOpenShift Key=operator_namespace,Value=openshift-image-registry Key=operator_name,Value=installer-cloud-credentials

注記

テーブルで提供されるコマンドの例には、ManagedOpenShift 接頭辞が含まれます。プレフィックスは、--prefix オプションを使用してカスタム接頭辞を指定しない場合に暗示されます。

5.3.3. クラスター固有の Operator IAM ロール参照

このセクションでは、STS を使用する ROSA デプロイメントに必要な Operator IAM ロールの詳細を提供します。

rosa CLI を使用して Operator ロールを作成する場合、一致するクラスターバージョンの Operator ポリシーはロールに割り当てられます。Operator ポリシーは、互換性のある Operator およびバージョンにタグ付けされます。Operator ロールの適切なポリシーは、タグを使用して決定されます。

注記

Operator ロールのアカウントで複数のマッチングポリシーが利用可能な場合は、Operator の作成時にオプションのインタラクティブな一覧が提供されます。

表5.10 ROSA クラスター固有の Operator ロール

リソース説明

ManagedOpenShift-openshift-cluster-csi-drivers-ebs-cloud-credentials

Container Storage Interface (CSI) でバックエンドストレージを管理するのに ROSA で必要な IAM ロール。

ManagedOpenShift-openshift-machine-api-aws-cloud-credentials

コアクラスター機能を実行するのに ROSA Machine Config Operator で必要な IAM ロール。

ManagedOpenShift-openshift-cloud-credential-operator-cloud-credentials

クラウドプロバイダーの認証情報への ROSA Cloud Credential Operator で必要な IAM ロール。

ManagedOpenShift-openshift-image-registry-installer-cloud-credentials

クラスターの AWS S3 で内部レジストリーストレージを管理するために ROSA Image Registry Operator で必要な IAM ロール。

ManagedOpenShift-openshift-ingress-operator-cloud-credentials

クラスターへの外部アクセスを管理するのに ROSA Ingress Operator で必要な IAM ロール。

5.3.3.1. Operator IAM ロール AWS CLI リファレンス

このセクションでは、manual モードを使用して以下の rosa コマンドを実行する際にターミナルに表示される aws CLI コマンドを一覧表示します。

$ rosa create operator-roles --mode manual --cluster <cluster_name>
注記

manual モードを使用すると、aws コマンドは確認用に端末に出力されます。aws コマンドを確認したら、手動で実行する必要があります。または、rosa create コマンドで --mode auto を指定して、aws コマンドを即時に実行することができます。

コマンド出力

aws iam create-role \
	--role-name <cluster_name>-xxxx-openshift-cluster-csi-drivers-ebs-cloud-credent \
	--assume-role-policy-document file://operator_cluster_csi_drivers_ebs_cloud_credentials_policy.json \
	--tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-cluster-csi-drivers Key=operator_name,Value=ebs-cloud-credentials

aws iam attach-role-policy \
	--role-name <cluster_name>-xxxx-openshift-cluster-csi-drivers-ebs-cloud-credent \
	--policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-cluster-csi-drivers-ebs-cloud-credent

aws iam create-role \
	--role-name <cluster_name>-xxxx-openshift-machine-api-aws-cloud-credentials \
	--assume-role-policy-document file://operator_machine_api_aws_cloud_credentials_policy.json \
	--tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-machine-api Key=operator_name,Value=aws-cloud-credentials

aws iam attach-role-policy \
	--role-name <cluster_name>-xxxx-openshift-machine-api-aws-cloud-credentials \
	--policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-machine-api-aws-cloud-credentials

aws iam create-role \
	--role-name <cluster_name>-xxxx-openshift-cloud-credential-operator-cloud-crede \
	--assume-role-policy-document file://operator_cloud_credential_operator_cloud_credential_operator_iam_ro_creds_policy.json \
	--tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-cloud-credential-operator Key=operator_name,Value=cloud-credential-operator-iam-ro-creds

aws iam attach-role-policy \
	--role-name <cluster_name>-xxxx-openshift-cloud-credential-operator-cloud-crede \
	--policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-cloud-credential-operator-cloud-crede

aws iam create-role \
	--role-name <cluster_name>-xxxx-openshift-image-registry-installer-cloud-creden \
	--assume-role-policy-document file://operator_image_registry_installer_cloud_credentials_policy.json \
	--tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-image-registry Key=operator_name,Value=installer-cloud-credentials

aws iam attach-role-policy \
	--role-name <cluster_name>-xxxx-openshift-image-registry-installer-cloud-creden \
	--policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-image-registry-installer-cloud-creden

aws iam create-role \
	--role-name <cluster_name>-xxxx-openshift-ingress-operator-cloud-credentials \
	--assume-role-policy-document file://operator_ingress_operator_cloud_credentials_policy.json \
	--tags Key=rosa_cluster_id,Value=<id> Key=rosa_openshift_version,Value=4.8 Key=rosa_role_prefix,Value= Key=operator_namespace,Value=openshift-ingress-operator Key=operator_name,Value=cloud-credentials

aws iam attach-role-policy \
	--role-name <cluster_name>-xxxx-openshift-ingress-operator-cloud-credentials \
	--policy-arn arn:aws:iam::<aws_account_id>:policy/ManagedOpenShift-openshift-ingress-operator-cloud-credentials

注記

テーブルで提供されているコマンドの例には、ManagedOpenShift プレフィックスを使用する Operator ロールが含まれます。Operator ポリシーを含む、アカウント全体のロールおよびポリシーの作成時にカスタムプレフィックスを定義する場合は、Operator ロールの作成時に --prefix <prefix_name> オプションを使用してこれを参照する必要があります。

5.3.4. Operator 認証用の OIDC プロバイダー要件

STS を使用する ROSA インストールの場合は、認証を行うためにクラスター Operator によって使用されるクラスター固有の OIDC プロバイダーを作成する必要があります。

5.3.4.1. OIDC プロバイダー AWS CLI リファレンス

このセクションでは、manual モードを使用して以下の rosa コマンドを実行する際にターミナルに表示される aws CLI コマンドを一覧表示します。

$ rosa create oidc-provider --mode manual --cluster <cluster_name>
注記

manual モードを使用すると、aws コマンドはレビュー用に端末に出力されます。aws コマンドを確認したら、手動で実行する必要があります。または、rosa create コマンドで --mode auto を指定して、aws コマンドを即時に実行することができます。

コマンド出力

aws iam create-open-id-connect-provider \
	--url https://rh-oidc.s3.<aws_region>.amazonaws.com/<cluster_id> \
	--client-id-list openshift sts.amazonaws.com \
	--thumbprint-list <thumbprint> 1

1
サムプリントは、rosa create oidc-provider コマンドの実行時に自動的に生成されます。AWS Identity and Access Management (IAM) OpenID Connect (OIDC)アイデンティティープロバイダーでサムプリントを使用する方法は、AWS ドキュメントを参照してください。

5.4. インタラクティブなクラスター作成モードリファレンス

このセクションでは、インタラクティブモードを使用して rosa CLI でクラスターを作成するときに表示されるオプションの概要を説明します。

5.4.1. インタラクティブなクラスター作成モードオプションについて

インタラクティブモードを使用して AWS Security Token Service (STS)で Red Hat OpenShift Service on AWS クラスターを作成できます。rosa create cluster の実行時に --interactive オプションを指定することで、モードを有効にできます。以下の表は、インタラクティブモードのオプションを示しています。

表5.11 --interactive モードオプション

フィールド説明

クラスター名

クラスターの名前を入力します(例: my-rosa-cluster)。

AWS STS を使用したクラスターのデプロイ

AWS Security Token Service (STS)を使用して、コンポーネント固有の AWS Identity and Access Management (IAM)ロールについて一時的な制限付き権限の認証情報を割り当てる OpenShift クラスターを作成します。サービスを使用すると、クラスターコンポーネントはセキュアなクラウドリソース管理プラクティスを使用して AWS API 呼び出しを実行できます。

OpenShift バージョン

インストールする OpenShift のバージョンを選択します(例: 4.3.12)。デフォルトは最新のバージョンです。

External ID (optional)

アカウントロールが仮定される際に OpenShift Cluster Manager および OpenShift インストーラーによって渡される一意の識別子を指定します。このオプションは、外部 ID を予想されるカスタムアカウントロールにのみ必要です。

Operator roles prefix

クラスター固有の Operator IAM ロールに割り当てるプレフィックスを入力します。デフォルトはクラスターの名前であり、4 桁のランダムな文字列です(例: my-rosa-cluster-a0b1)。

複数のアベイラビリティーゾーン

クラスターを AWS リージョンの複数のアベイラビリティーゾーンにデプロイします。デフォルトは No で、クラスターは単一のアベイラビリティーゾーンにデプロイされます。クラスターを複数のアベイラビリティーゾーンにデプロイする場合、AWS リージョンには少なくとも 3 つのアベイラビリティーゾーンが必要です。実稼働環境のワークロードには、複数のアベイラビリティーゾーンの使用が推奨されます。

AWS region

クラスターをデプロイする AWS リージョンを指定します。これにより、AWS_REGION 環境変数が上書きされます。

PrivateLink cluster

AWS PrivateLink を使用してクラスターを作成します。このオプションは、トラフィックをパブリックインターネットに公開することなく、Virtual Private Cloud (VPC)、AWS サービス、およびオンプレミスネットワーク間のプライベート接続を提供します。サポートを提供するために、Red Hat Site Reliability Engineering (SRE)は AWS PrivateLink Virtual Private Cloud (VPC)エンドポイントを使用してクラスターに接続できます。このオプションは、クラスターの作成後に変更できません。デフォルトは No です。

Install into an existing VPC

クラスターを既存の AWS VPC にインストールします。このオプションを使用するには、VPC にはクラスターをインストールする各アベイラビリティーゾーンの 2 つのサブネットが必要です。デフォルトは No です。

Enable customer managed key

このオプションを有効にして、AWS Key Management Service (KMS)を使用して、暗号化されたデータの鍵を安全に管理できるようにします。これらのキーは、デフォルトで暗号化されるコントロールプレーンのデータボリュームに使用されます。お客様のアプリケーションの永続ボリューム(PV)は、キー管理に AWS KMS も使用します。有効にすると、リージョンのアカウント KMS キーがデフォルトで使用されます。デフォルトは No です。

Compute nodes instance type

コンピュートノードのインスタンスタイプを選択します。デフォルトは m5.xlarge です。

Enable autoscaling

コンピュートノードの自動スケーリングを有効にします。Autoscaler は、デプロイメントの需要に合わせてクラスターのサイズを調整します。デフォルトは No です。

コンピュートノード

各アベイラビリティーゾーンにプロビジョニングするコンピュートノードの数を指定します。単一アベイラビリティーゾーンにデプロイされたクラスターには、2 つ以上のノードが必要です。複数のゾーンにデプロイされるクラスターには 3 つ以上のノードが必要です。デフォルトは 2 です。

Machine CIDR

マシンの IP アドレス範囲を指定します。単一のアベイラビリティーゾーンデプロイメントでは、サブネットプレフィックス/25を使用した128アドレスの最小IPアドレス範囲がサポートされます。サブネットプレフィックス /24 を使用する最小アドレス範囲 256 アドレスの範囲は、複数のアベイラビリティーゾーンを使用するデプロイメントでサポートされます。デフォルトは 10.0.0.0/16 です。

Service CIDR

サービスの IP アドレス範囲を指定します。OpenShift SDN では、サービス用に 1 つのアドレスブロックのみが許可されます。このアドレスブロックは他のアドレスブロックと重複できません。デフォルトは 172.30.0.0/16 です。

Pod CIDR

Pod IP アドレス範囲を指定します。OpenShift SDN ネットワークプラグインは複数のクラスターネットワークをサポートします。複数のクラスターネットワークのアドレスブロックには重複が許可されません。範囲は、ワークロードに対応するのに十分な大きさである必要があります。デフォルトは 10.128.0.0/14 です。

Host prefix

それぞれの個別ノードに割り当てるサブネットプレフィックスの長さを指定します。たとえば、ホストプレフィックスが 23 に設定される場合は、各ノードに CIDR アドレス範囲の /23 サブネットが割り当てられます。デフォルトは 23 です。

Disable workload monitoring

ユーザー定義プロジェクトの監視を無効にします。ユーザー定義プロジェクトの監視はデフォルトで有効にされます。

5.4.2. 関連情報

第6章 ROSA クラスターへのアクセス

アイデンティティープロバイダー (IDP) アカウントを使用して Red Hat OpenShift Service on AWS (ROSA) クラスターにアクセスすることが推奨されます。ただし、クラスターを作成したクラスター管理者は、クイックアクセス手順を使用してこれにアクセスできます。

本書では、クラスターにアクセスし、rosa CLI を使用して IDP を設定する方法を説明します。または、OpenShift Cluster Manager (OCM) コンソールを使用して IDP アカウントを作成できます。

6.1. クラスターのすばやくアクセス

このクイックアクセス手順を使用して、クラスターにログインできます。

注記

ベストプラクティスとして、IDP アカウントを代わりに使用してクラスターにアクセスできます。

手順

  1. 以下のコマンドを実行します。

    $ rosa create admin --cluster=<cluster_name>

    出力例

    W: It is recommended to add an identity provider to login to this cluster. See 'rosa create idp --help' for more information.
    I: Admin account has been added to cluster 'cluster_name'. It may take up to a minute for the account to become active.
    I: To login, run the following command:
    oc login https://api.cluster-name.t6k4.i1.oragnization.org:6443 \
    --username cluster-admin \
    --password FWGYL-2mkJI-3ZTTZ-rINns

  2. 直前のコマンドの出力の oc login コマンド、ユーザー名、およびパスワードを入力します。

    出力例

    $ oc login https://api.cluster_name.t6k4.i1.oragnization.org:6443 \
    >  --username cluster-admin \
    >  --password FWGYL-2mkJI-3ZTTZ-rINns
    Login successful.                                                                                                                                                                                                                                                       You have access to 77 projects, the list has been suppressed. You can list all projects with ' projects'

  3. デフォルトプロジェクトを使用して、この oc コマンドを実行してクラスター管理者のアクセスが作成されていることを確認します。

    $ oc whoami

    出力例

    cluster-admin

6.2. IDP アカウントでのクラスターへのアクセス

クラスターにログインするには、アイデンティティープロバイダー (IDP) を設定できます。この手順では、IDP の例として GitHub を使用します。サポートされている他の IDP を表示するには、rosa create idp --help コマンドを実行します。

注記

または、クラスターを作成したユーザーとして、クイックアクセス手順を使用できます。

手順

IDP アカウントを使用してクラスターにアクセスするには、以下を実行します。

  1. IDP を追加します。

    1. 以下のコマンドは、GitHub がサポートする IDP を作成します。コマンドを実行後に、出力の対話式プロンプトに従って GitHub 開発者の設定 にアクセスし、新しい OAuth アプリケーションを設定します。

      $ rosa create idp --cluster=<cluster_name> --interactive
    2. 以下の値を設定します。

      • アイデンティティープロバイダーのタイプ: github
      • メンバーの制限: organizations (GitHub Organization がない場合は、これを作成できます。)
      • GitHub Organization: rh-test-org (組織の名前を入力します)

      出力例

      I: Interactive mode enabled.
      Any optional fields can be left empty and a default will be selected.
      ? Type of identity provider: github
      ? Restrict to members of: organizations
      ? GitHub organizations: rh-test-org
      ? To use GitHub as an identity provider, you must first register the application:
        - Open the following URL:
          https://github.com/organizations/rh-rosa-test-cluster/settings/applications/new?oauth_application%5Bcallback_url%5D=https%3A%2F%2Foauth-openshift.apps.rh-rosa-test-cluster.z7v0.s1.devshift.org%2Foauth2callback%2Fgithub-1&oauth_application%5Bname%5D=rh-rosa-test-cluster-stage&oauth_application%5Burl%5D=https%3A%2F%2Fconsole-openshift-console.apps.rh-rosa-test-cluster.z7v0.s1.devshift.org
        - Click on 'Register application'
      ...

    3. 出力から URL に従います。これにより、指定した GitHub 組織に新しい OAuth アプリケーションが作成されます。
    4. Register application をクリックして、クライアント ID およびクライアントシークレットにアクセスします。
    5. 作成した GitHub アプリケーションの情報を使用し、プロンプトを続行します。以下の値を設定します。

      • クライアント ID: <my_github_client_id>
      • クライアントシークレット: [? for help] <my_github_client_secret>
      • ホスト名: (オプション。現在のところ空白のままにすることができます)
      • マッピング方法: claim

      出力例 (続き)

      ...
      ? Client ID: <my_github_client_id>
      ? Client Secret: [? for help] <my_github_client_secret>
      ? Hostname:
      ? Mapping method: claim
      I: Configuring IDP for cluster 'rh_rosa_test_cluster'
      I: Identity Provider 'github-1' has been created. You need to ensure that there is a list of cluster administrators defined. See 'rosa create user --help' for more information. To login into the console, open https://console-openshift-console.apps.rh-test-org.z7v0.s1.devshift.org and click on github-1

      IDP は、クラスター内で設定するのに 1 - 2 分かかる場合があります。

    6. 以下のコマンドを実行して、IDP が正しく設定されていることを確認します。

      $ rosa list idps --cluster=<cluster_name>

      出力例

      NAME        TYPE      AUTH URL
      github-1    GitHub    https://oauth-openshift.apps.rh-rosa-test-cluster1.j9n4.s1.devshift.org/oauth2callback/github-1

  2. クラスターにログインします。

    1. 以下のコマンドを実行して、クラスターの Console URL を取得します。

      $ rosa describe cluster --cluster=<cluster_name>

      出力例

      Name:        rh-rosa-test-cluster1
      ID:          1de87g7c30g75qechgh7l5b2bha6r04e
      External ID: 34322be7-b2a7-45c2-af39-2c684ce624e1
      API URL:     https://api.rh-rosa-test-cluster1.j9n4.s1.devshift.org:6443
      Console URL: https://console-openshift-console.apps.rh-rosa-test-cluster1.j9n4.s1.devshift.org
      Nodes:       Master: 3, Infra: 3, Compute: 4
      Region:      us-east-2
      State:       ready
      Created:     May 27, 2020

    2. Console URL に移動し、Github 認証情報を使用してログインします。
    3. OpenShift コンソールの右上で、名前をクリックして Copy Login Command をクリックします。
    4. 追加した IDP の名前 (この場合は github-1) を選択し、Display Token をクリックします。
    5. oc ログインコマンドをコピーし、これをターミナルに貼り付けます。

      $ oc login --token=z3sgOGVDk0k4vbqo_wFqBQQTnT-nA-nQLb8XEmWnw4X --server=https://api.rh-rosa-test-cluster1.j9n4.s1.devshift.org:6443

      出力例

      Logged into "https://api.rh-rosa-cluster1.j9n4.s1.devshift.org:6443" as "rh-rosa-test-user" using the token provided.
      
      You have access to 67 projects, the list has been suppressed. You can list all projects with 'oc projects'
      
      Using project "default".

    6. 単純な oc コマンドを実行して、すべての設定が適切でログインしていることを確認します。

      $ oc version

      出力例

      Client Version: 4.4.0-202005231254-4a4cd75
      Server Version: 4.3.18
      Kubernetes Version: v1.16.2

6.3. cluster-admin アクセス権限の付与

クラスターを作成したユーザーとして、cluster-admin ユーザーロールをアカウントに追加して、最大管理者権限を割り当てます。これらの権限は、クラスターの作成時に自動的にユーザーアカウントに割り当てられることはありません。

さらに、クラスターを作成したユーザーのみが、他の cluster-admin または dedicated-admin ユーザーにクラスターアクセスを付与できます。dedicated-admin アクセスを持つユーザーの権限は少なくなります。ベストプラクティスとして、cluster-admin ユーザーの数をできるだけ少なく制限できます。

前提条件

  • アイデンティティープロバイダー (IDP) をクラスターに追加している。
  • 作成するユーザーの IDP ユーザー名がある。
  • クラスターにログインしている。

手順

  1. ユーザーに cluster-admin 権限を付与します。

    $ rosa grant user cluster-admin --user=<idp_user_name> --cluster=<cluster_name>
  2. ユーザーがクラスター管理者として一覧表示されていることを確認します。

    $ rosa list users --cluster=<cluster_name>

    出力例

    GROUP             NAME
    cluster-admins    rh-rosa-test-user
    dedicated-admins  rh-rosa-test-user

  3. 以下のコマンドを実行して、ユーザーが cluster-admin アクセスを持つことを確認します。クラスター管理者はエラーを出さずにこのコマンドを実行できますが、専用の管理者は実行できません。

    $ oc get all -n openshift-apiserver

    出力例

    NAME                  READY   STATUS    RESTARTS   AGE
    pod/apiserver-6ndg2   1/1     Running   0          17h
    pod/apiserver-lrmxs   1/1     Running   0          17h
    pod/apiserver-tsqhz   1/1     Running   0          17h
    NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
    service/api   ClusterIP   172.30.23.241   <none>        443/TCP   18h
    NAME                       DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                     AGE
    daemonset.apps/apiserver   3         3         3       3            3           node-role.kubernetes.io/master=   18h

6.4. dedicated-admin アクセスの取り消し

クラスターを作成したユーザーのみが、他の cluster-admin または dedicated-admin ユーザーにクラスターアクセスを付与できます。dedicated-admin アクセスを持つユーザーの権限は少なくなります。ベストプラクティスとして、dedicated-admin アクセスをほとんどの管理者に付与することができます。

前提条件

  • アイデンティティープロバイダー (IDP) をクラスターに追加している。
  • 作成するユーザーの IDP ユーザー名がある。
  • クラスターにログインしている。

手順

  1. 以下のコマンドを実行して、ユーザーを dedicated-admin にプロモートします。

    $ rosa grant user dedicated-admin --user=<idp_user_name> --cluster=<cluster_name>
  2. 以下のコマンドを実行して、ユーザーに dedicated-admin アクセスがあることを確認します。

    $ oc get groups dedicated-admins

    出力例

    NAME               USERS
    dedicated-admins   rh-rosa-test-user

    注記

    Forbidden エラーは、dedicated-admin 権限を持たないユーザーがこのコマンドを実行する場合に表示されます。

6.5. 関連情報

第7章 STS のアイデンティティープロバイダーの設定

Red Hat OpenShift Service on AWS(ROSA)クラスターの作成後に、アイデンティティープロバイダーを設定して、ユーザーがクラスターにアクセスする方法を判別する必要があります。

以下のトピックでは、OpenShift Cluster Manager (OCM) コンソールを使用してアイデンティティープロバイダーを設定する方法を説明します。または、rosa CLI を使用してアイデンティティープロバイダーを設定し、クラスターにアクセスできます。

7.1. アイデンティティープロバイダーについて

Red Hat OpenShift Service on AWS には、ビルトイン OAuth サーバーが含まれます。開発者および管理者は OAuth アクセストークンを取得して、API に対して認証します。管理者は、クラスターのインストール後に、OAuth をアイデンティティープロバイダーを指定するように設定できます。アイデンティティープロバイダーを設定すると、ユーザーはログインし、クラスターにアクセスできます。

7.1.1. サポートされるアイデンティティープロバイダー

以下の種類のアイデンティティープロバイダーを設定できます。

アイデンティティープロバイダー詳細

GitHub または GitHub Enterprise

github アイデンティティープロバイダーを、GitHub または GitHub Enterprise の OAuth 認証サーバーに対してユーザー名とパスワードを検証するように設定します。

GitLab

gitlab アイデンティティープロバイダーを、GitLab.com またはその他の GitLab インスタンスをアイデンティティープロバイダーとして使用するように設定します。

Google

google アイデンティティープロバイダーを、Google の OpenID Connect 統合を使用して設定します。

LDAP

ldap アイデンティティープロバイダーを、単純なバインド認証を使用して LDAPv3 サーバーに対してユーザー名とパスワードを検証するように設定します。

OpenID Connect

oidc アイデンティティープロバイダーを、Authorization Code Flowを使用して OpenID Connect アイデンティティープロバイダーと統合するように設定します。

HTPasswd

単一の静的管理ユーザー用に htpasswd アイデンティティープロバイダーを設定します。問題のトラブルシューティングを行うには、ユーザーとしてクラスターにログインできます。

7.1.2. アイデンティティープロバイダーパラメーター

以下のパラメーターは、すべてのアイデンティティープロバイダーに共通するパラメーターです。

パラメーター詳細

name

プロバイダー名は、プロバイダーのユーザー名にプレフィックスとして付加され、アイデンティティー名が作成されます。

mappingMethod

新規アイデンティティーがログイン時にユーザーにマップされる方法を定義します。以下の値のいずれかを入力します。

claim
デフォルトの値です。アイデンティティーの推奨ユーザー名を持つユーザーをプロビジョニングします。そのユーザー名を持つユーザーがすでに別のアイデンティティーにマッピングされている場合は失敗します。
lookup
既存のアイデンティティー、ユーザーアイデンティティーマッピング、およびユーザーを検索しますが、ユーザーまたはアイデンティティーの自動プロビジョニングは行いません。これにより、クラスター管理者は手動で、または外部のプロセスを使用してアイデンティティーとユーザーを設定できます。この方法を使用する場合は、ユーザーを手動でプロビジョニングする必要があります。
generate
アイデンティティーの推奨ユーザー名を持つユーザーをプロビジョニングします。推奨ユーザー名を持つユーザーがすでに既存のアイデンティティーにマッピングされている場合は、一意のユーザー名が生成されます。たとえば、myuser2 です。この方法は、Red Hat OpenShift Service on AWS のユーザー名とアイデンティティープロバイダーのユーザー名との正確な一致を必要とする外部プロセス(LDAP グループ同期など)と組み合わせて使用することはできません。
add
アイデンティティーの推奨ユーザー名を持つユーザーをプロビジョニングします。推奨ユーザー名を持つユーザーがすでに存在する場合、アイデンティティーは既存のユーザーにマッピングされ、そのユーザーの既存のアイデンティティーマッピングに追加されます。これは、同じユーザーセットを識別して同じユーザー名にマッピングするアイデンティティープロバイダーが複数設定されている場合に必要です。
注記

mappingMethod パラメーターを add に設定すると、アイデンティティープロバイダーの追加または変更時に新規プロバイダーのアイデンティティーを既存ユーザーにマッピングできます。

7.2. GitHub ID プロバイダーの設定

GitHub アイデンティティープロバイダーを、GitHub または GitHub Enterprise の OAuth 認証サーバーに対してユーザー名とパスワードを検証し、Red Hat OpenShift Service on AWS クラスターにアクセスするように設定します。OAuth は Red Hat OpenShift Service on AWS と GitHub または GitHub Enterprise 間のトークン交換フローを容易にします。

警告

GitHub 認証を設定することによって、ユーザーは GitHub 認証情報を使用して Red Hat OpenShift Service on AWS にログインできます。GitHub ユーザー ID を持つすべてのユーザーが Red Hat OpenShift Service on AWS クラスターにログインできないようにするために、アクセスを特定の GitHub 組織またはチームのユーザーに制限する必要があります。

前提条件

  • OAuth アプリケーションは、GitHub 組織管理者によって GitHub 組織設定内に直接作成する必要があります。
  • GitHub 組織またはチームが GitHub アカウントに設定されている必要があります。

手順

  1. OpenShift Cluster Manager (OCM) から、Clusters ページに移動し、アイデンティティープロバイダーを設定する必要のあるクラスターを選択します。
  2. Access control タブをクリックします。
  3. Add identity provider をクリックします。

    注記

    クラスターの作成後に表示される警告メッセージの Add Oauth configuration リンクをクリックして、アイデンティティープロバイダーを設定することもできます。

  4. ドロップダウンメニューから GitHub を選択します。
  5. アイデンティティープロバイダーの一意の名前を入力します。この名前は後で変更することはできません。

    • OAuth callback URL は提供されるフィールドに自動的に生成されます。これを使用して GitHub アプリケーションを登録します。

      https://oauth-openshift.apps.<cluster_name>.<cluster_domain>/oauth2callback/<idp_provider_name>

      例:

      https://oauth-openshift.apps.example-openshift-cluster.com/oauth2callback/github/
  6. アプリケーションを GitHub に登録します
  7. Red Hat OpenShift Service on AWS に戻り、ドロップダウンメニューからマッピング方法を選択します。ほとんどの場合、Claim が推奨されます。
  8. GitHub から提供される Client ID および Client secret を入力します。
  9. hostname を入力します。GitHub Enterprise のホステッドインスタンスを使用する場合は、ホスト名を入力する必要があります。
  10. 任意手順: 認証局 (CA) ファイルを使用して、設定された GitHub Enterprise URL のサーバー証明書を検証できます。Browse をクリックして CA ファイル を見つけ、これをアイデンティティープロバイダーに割り当てます。
  11. Use organizations または Use teams を選択し、アクセスを特定の GitHub 組織または GitHub チームに制限します。
  12. アクセスを制限する組織またはチームの名前を入力します。Add more をクリックして、ユーザーが所属できる複数の組織またはチームを指定します。
  13. Confirm をクリックします。

検証

  • 設定されたアイデンティティープロバイダーが Clusters ページの Access control タブに表示されるようになりました。

7.3. GitLab アイデンティティープロバイダーの設定

GitLab アイデンティティープロバイダーを、GitLab.com またはその他の GitLab インスタンスをアイデンティティープロバイダーとして使用するように設定します。

前提条件

  • GitLab バージョン 7.7.0 から 11.0 を使用する場合、OAuth 統合を使用して接続します。GitLab バージョン 11.1 以降の場合、OAuth ではなく OpenID Connect (OIDC) を使用して接続します。

手順

  1. OpenShift Cluster Manager (OCM) から、Clusters ページに移動し、アイデンティティープロバイダーを設定する必要のあるクラスターを選択します。
  2. Access control タブをクリックします。
  3. Add identity provider をクリックします。

    注記

    クラスターの作成後に表示される警告メッセージの Add Oauth configuration リンクをクリックして、アイデンティティープロバイダーを設定することもできます。

  4. ドロップダウンメニューから GitLab を選択します。
  5. アイデンティティープロバイダーの一意の名前を入力します。この名前は後で変更することはできません。

    • OAuth callback URL は提供されるフィールドに自動的に生成されます。この URL を GitLab に指定します。

      https://oauth-openshift.apps.<cluster_name>.<cluster_domain>/oauth2callback/<idp_provider_name>

      例:

      https://oauth-openshift.apps.example-openshift-cluster.com/oauth2callback/gitlab/
  6. GitLab に新規アプリケーションを追加します
  7. Red Hat OpenShift Service on AWS に戻り、ドロップダウンメニューからマッピング方法を選択します。ほとんどの場合、Claim が推奨されます。
  8. GitLab から提供される Client ID および Client secret を入力します。
  9. GitLab プロバイダーの URL を入力します。
  10. オプション: 認証局 (CA) ファイルを使用して、設定された GitLab URL のサーバー証明書を検証できます。Browse をクリックして CA ファイル を見つけ、これをアイデンティティープロバイダーに割り当てます。
  11. Confirm をクリックします。

検証

  • 設定されたアイデンティティープロバイダーが Clusters ページの Access control タブに表示されるようになりました。

7.4. Google ID プロバイダーの設定

ユーザーが Google 認証情報で認証できるように Google アイデンティティープロバイダーを設定します。

警告

Google をアイデンティティープロバイダーとして使用することで、Google ユーザーはサーバーに対して認証されます。hostedDomain 設定属性を使用して、特定のホストドメインのメンバーに認証を限定することができます。

手順

  1. OpenShift Cluster Manager (OCM) から、Clusters ページに移動し、アイデンティティープロバイダーを設定する必要のあるクラスターを選択します。
  2. Access control タブをクリックします。
  3. Add identity provider をクリックします。

    注記

    クラスターの作成後に表示される警告メッセージの Add Oauth configuration リンクをクリックして、アイデンティティープロバイダーを設定することもできます。

  4. ドロップダウンメニューから Google を選択します。
  5. アイデンティティープロバイダーの一意の名前を入力します。この名前は後で変更することはできません。

    • OAuth callback URL は提供されるフィールドに自動的に生成されます。この URL を Google に指定します。

      https://oauth-openshift.apps.<cluster_name>.<cluster_domain>/oauth2callback/<idp_provider_name>

      例:

      https://oauth-openshift.apps.example-openshift-cluster.com/oauth2callback/github/
  6. Google アイデンティティープロバイダーを、Google の OpenID Connect 統合 を使用して設定します。
  7. Red Hat OpenShift Service on AWS に戻り、ドロップダウンメニューからマッピング方法を選択します。ほとんどの場合、Claim が推奨されます。
  8. 登録済みの Google プロジェクトの Client ID と、Google が発行する Client secret を入力します。
  9. ホストされたドメインを入力して、ユーザーを Google Apps ドメインに制限します。
  10. Confirm をクリックします。

検証

  • 設定されたアイデンティティープロバイダーが Clusters ページの Access control タブに表示されるようになりました。

7.5. LDAP アイデンティティープロバイダーの設定

LDAP アイデンティティープロバイダーを、単純なバインド認証を使用して LDAPv3 サーバーに対してユーザー名とパスワードを検証するように設定します。

前提条件

  • LDAP アイデンティティープロバイダーを設定する場合は、設定済みの LDAP URL を入力する必要があります。設定される URL は、LDAP ホストと使用する検索パラメーターを指定する RFC 2255 URL です。URL の構文は以下のようになります。

    ldap://host:port/basedn?attribute?scope?filter
    URL コンポーネント詳細

    ldap

    通常の LDAP の場合は、文字列 ldap を使用します。セキュアな LDAP (LDAPS) の場合は、代わりに ldaps を使用します。

    host:port

    LDAP サーバーの名前とポートです。デフォルトは、ldap の場合は localhost:389、LDAPS の場合は localhost:636 です。

    basedn

    すべての検索が開始されるディレクトリーのブランチの DN です。これは少なくともディレクトリーツリーの最上位になければなりませんが、ディレクトリーのサブツリーを指定することもできます。

    attribute

    検索対象の属性です。RFC 2255 はカンマ区切りの属性の一覧を許可しますが、属性をどれだけ指定しても最初の属性のみが使用されます。属性を指定しない場合は、デフォルトで uid が使用されます。使用しているサブツリーのすべてのエントリー間で一意の属性を選択することを推奨します。

    scope

    検索の範囲です。one または sub のいずれかを指定できます。範囲を指定しない場合は、デフォルトの範囲として sub が使用されます。

    filter

    有効な LDAP 検索フィルターです。指定しない場合、デフォルトは (objectClass=*) です。

    検索の実行時に属性、フィルター、指定したユーザー名が組み合わされて以下のような検索フィルターが作成されます。

    (&(<filter>)(<attribute>=<username>))
    重要

    LDAP ディレクトリーの検索に認証が必要な場合は、エントリー検索の実行に使用する bindDNbindPassword を指定します。

手順

  1. OpenShift Cluster Manager (OCM) から、Clusters ページに移動し、アイデンティティープロバイダーを設定する必要のあるクラスターを選択します。
  2. Access control タブをクリックします。
  3. Add identity provider をクリックします。

    注記

    クラスターの作成後に表示される警告メッセージの Add Oauth configuration リンクをクリックして、アイデンティティープロバイダーを設定することもできます。

  4. ドロップダウンメニューから LDAP を選択します。
  5. アイデンティティープロバイダーの一意の名前を入力します。この名前は後で変更することはできません。
  6. ドロップダウンメニューからマッピング方法を選択します。ほとんどの場合、Claim が推奨されます。
  7. LDAP URL を入力して、使用する LDAP 検索パラメーターを指定します。
  8. オプション: Bind DN および Bind password を入力します。
  9. LDAP 属性をアイデンティティーにマップする属性を入力します。

    • 値をユーザー ID として使用する ID 属性を入力します。Add more をクリックして、複数の ID 属性を追加します。
    • オプション: 表示名の値として使用する Preferred username 属性を入力します。Add more をクリックして、優先する複数のユーザー名属性を追加します。
    • オプション: メールアドレスの値として使用する Email 属性を入力します。Add more をクリックして、複数のメール属性を追加します。
  10. オプション: Show advanced Options をクリックし、認証局 (CA) ファイルを LDAP アイデンティティープロバイダーに追加し、設定された URL のサーバー証明書を検証します。Browse をクリックして CA ファイル を見つけ、これをアイデンティティープロバイダーに割り当てます。
  11. オプション: 高度なオプションで、LDAP プロバイダーを 非セキュア にするよう選択できます。このオプションを選択すると、CA ファイルは使用できません。

    重要

    非セキュアな LDAP 接続(ldap:// またはポート 389)を使用している場合は、設定ウィザードで で Insecure オプションを確認する必要があります。

  12. Confirm をクリックします。

検証

  • 設定されたアイデンティティープロバイダーが Clusters ページの Access control タブに表示されるようになりました。

7.6. OpenID アイデンティティープロバイダーの設定

OpenID アイデンティティープロバイダーを、Authorization Code Flowを使用して OpenID Connect アイデンティティープロバイダーと統合するように設定します。

重要

Red Hat OpenShift Service on AWS の認証 Operator では、設定済みの OpenID Connect アイデンティティープロバイダーが OpenID Connect Discovery 仕様を実装する必要があります。

要求は、OpenID アイデンティティープロバイダーから返される JWT id_token から読み取られ、指定される場合は Issuer URL によって返される JSON から読み取られます。

1 つ以上の要求をユーザーのアイデンティティーを使用するように設定される必要があります。

また、どの要求をユーザーの推奨ユーザー名、表示名およびメールアドレスとして使用するか指定することができます。複数の要求が指定されている場合、値が入力されている最初の要求が使用されます。標準の要求は以下の通りです。

要求詳細

preferred_username

ユーザーのプロビジョニング時に優先されるユーザー名です。janedoe などのユーザーを参照する際に使用する省略形の名前です。通常は、ユーザー名またはメールなどの、認証システムのユーザーのログインまたはユーザー名に対応する値です。

email

メールアドレス。

name

表示名。

詳細は、OpenID claim のドキュメント を参照してください。

前提条件

  • OpenID Connect を設定する前に、Red Hat OpenShift Service on AWS クラスターで使用する Red Hat 製品またはサービスのインストール前提条件を確認してください。

手順

  1. OpenShift Cluster Manager (OCM) から、Clusters ページに移動し、アイデンティティープロバイダーを設定する必要のあるクラスターを選択します。
  2. Access control タブをクリックします。
  3. Add identity provider をクリックします。

    注記

    クラスターの作成後に表示される警告メッセージの Add Oauth configuration リンクをクリックして、アイデンティティープロバイダーを設定することもできます。

  4. ドロップダウンメニューから OpenID を選択します。
  5. アイデンティティープロバイダーの一意の名前を入力します。この名前は後で変更することはできません。

    • OAuth callback URL は提供されるフィールドに自動的に生成されます。

      https://oauth-openshift.apps.<cluster_name>.<cluster_domain>/oauth2callback/<idp_provider_name>

      例:

      https://oauth-openshift.apps.example-openshift-cluster.com/oauth2callback/openid/
  6. Authorization Code Flow を使用して承認リクエストを作成します
  7. Red Hat OpenShift Service on AWS に戻り、ドロップダウンメニューからマッピング方法を選択します。ほとんどの場合、Claim が推奨されます。
  8. OpenID から提供される Client ID および Client secret を入力します。
  9. Issuer URL を入力します。これは、OpenID プロバイダーが発行者 ID としてアサートする URL です。URL クエリーパラメーターまたはフラグメントのない https スキームを使用する必要があります。
  10. メールアドレスの値として使用する Email 属性を入力します。Add more をクリックして、複数のメール属性を追加します。
  11. 優先するユーザー名の値として使用する Name 属性を入力します。Add more をクリックして、優先する複数のユーザー名を追加します。
  12. 表示名の値として使用する Preferred username 属性を入力します。Add more をクリックして、複数の表示名を追加します。
  13. オプション: Show advanced Options をクリックし、認証局 (CA) ファイルを OpenID アイデンティティープロバイダーに追加します。
  14. オプション: 高度なオプションから、追加のスコープ を追加できます。デフォルトでは、OpenID の範囲が要求されます。
  15. Confirm をクリックします。

検証

  • 設定されたアイデンティティープロバイダーが Clusters ページの Access control タブに表示されるようになりました。

7.7. 関連情報

第8章 ROSA クラスターへのアクセスの削除

rosa コマンドラインを使用して Red Hat OpenShift Service on AWS(ROSA)クラスターへのアクセスを削除します。

8.1. dedicated-admin アクセスの取り消し

クラスターを作成したユーザーのみが dedicated-admin ユーザーのアクセスを取り消すことができます。

前提条件

  • アイデンティティープロバイダー (IDP) をクラスターに追加している。
  • 取り消す権限を持つユーザーの IDP ユーザー名がある。
  • クラスターにログインしている。

手順

  1. 以下のコマンドを実行して dedicated-admin のアクセスを取り消します。

    $ rosa revoke user dedicated-admin --user=<idp_user_name> --cluster=<cluster_name>
  2. 以下のコマンドを実行して、ユーザーに dedicated-admin アクセスがなくなったことを確認します。ユーザーは出力に一覧表示されません。

    $ oc get groups dedicated-admins
    注記

    Forbidden エラーは、dedicated-admin 権限を持たないユーザーがこのコマンドを実行する場合に表示されます。

8.2. cluster-admin アクセスの取り消し

クラスターを作成したユーザーのみが、cluster-admin ユーザーのアクセスを取り消すことができます。

前提条件

  • アイデンティティープロバイダー (IDP) をクラスターに追加している。
  • 取り消す権限を持つユーザーの IDP ユーザー名がある。
  • クラスターにログインしている。

手順

  1. ユーザーの cluster-admin 権限を取り消します。

    $ rosa revoke user --cluster=<cluster_name> --cluster-admins=<idp_user_name>
  2. ユーザーが cluster-admin として一覧表示されていないことを確認します。

    $ rosa list users --cluster=<cluster_name>

第9章 ROSA クラスターの削除

rosa コマンドラインを使用して Red Hat OpenShift Service on AWS(ROSA)クラスターを削除します。

9.1. クラスターの削除

rosa CLI を使用して Red Hat OpenShift Service on AWS クラスターを削除できます。

アドオンがインストールされている場合、クラスターの削除前にアドオンをアンインストールするため、削除に時間がかかります。時間は、アドオンの数とサイズによって異なります。

手順

  1. 以下のコマンドを実行してクラスターを削除し、ログを監視します。& lt;cluster_name> はクラスターの名前または ID に置き換えます。

    $ rosa delete cluster --cluster=<cluster_name> --watch

9.2. CLI を使用した AWS リソースの削除

Red Hat OpenShift Service on AWS (ROSA) クラスターを削除した後に、CLI を使用して AWS Security Token Service (STS) リソースを削除できます。

重要

アカウント全体の Identity Access Management (IAM) ロールおよびポリシーは、同じ AWS アカウントの他の ROSA クラスターによって使用される可能性があります。他のクラスターで必要とされていない場合にのみ、リソースを削除する必要があります。

前提条件

  • インストールホストに、最新の AWS CLI をインストールして設定している。
  • ROSA クラスターを削除している。詳細は、「クラスターの削除」セクションを参照してください。

    重要

    IAM ロールおよびポリシーを削除する前にクラスターを削除する必要があります。インストーラーで作成されたリソースを削除するには、アカウント全体のロールおよびポリシーが必要です。OpenShift Operator によって作成されたリソースをクリーンアップするには、Operator のロールおよびポリシーが必要です。

手順

  1. クラスターで Operator 認証用に作成した OpenID Connect (OIDC) プロバイダーを削除します。

    $ aws iam delete-open-id-connect-provider --open-id-connect-provider-arn <oidc_provider_arn> 1
    1
    <oidc_provider_arn> を、クラスター Operator を認証するのに作成した OpenID Connect (OIDC) リソースの Amazon Resource Name (ARN) に置き換えます。$ aws iam list-open-id-connect-providers を実行すると、アカウントの OIDC プロバイダーを一覧表示できます。
  2. クラスター固有の Operator IAM ロールを削除します。

    1. クラスター固有の IAM ロールのいずれかに割り当てられるアカウント全体の Operator ポリシーを一覧表示します。

      $ aws iam list-attached-role-policies --role-name <operator_role_name> 1
      1
      <operator_role_name> をクラスター用に作成したクラスター固有の Operator ロールの名前に置き換えます。完全な ARN ではなく、ロール名を指定します。$ aws iam list-roles を実行して、アカウントのロールを一覧表示できます。
      ヒント

      IAM ロールおよびポリシー名には、STS リソースの作成時に指定されるロールプレフィックスが含まれます。デフォルトの接頭辞は ManagedOpenShift です。

    2. ロールからポリシーの割り当てを解除します。

      $ aws iam detach-role-policy --role-name <operator_role_name> --policy-arn <operator_policy_arn> 1
      1
      <operator_policy_arn> を、割り当てられた Operator ポリシーの ARN に置き換えます。
    3. ロールを削除します。

      $ aws iam delete-role --role-name <operator_role_name>
    4. 手順を繰り返して、クラスターについての各クラスター固有の Operator ロールを削除します。
  3. STS を使用する ROSA デプロイメント用に作成したアカウント全体の Operator ポリシーを削除します。以下のコマンドは、1 つのポリシーを削除します。

    $ aws iam delete-policy --policy-arn <operator_policy_arn>  1
    1
    <operator_policy_arn> を、いずれかの Operator ポリシーの ARN に置き換えます。$ aws iam list-policies を実行して、アカウントのポリシーを一覧表示できます。

    この手順を繰り返して、各 Operator ポリシーを削除します。

  4. STS を使用する ROSA デプロイメント用に作成したアカウント全体の IAM ロールおよびインラインポリシーを削除します。

    1. アカウント全体の IAM ロールのいずれかについて、インラインポリシーを一覧表示します。

      $ aws iam list-role-policies --role-name <account_wide_role_name> 1
      1
      <account_wide_role_name> をアカウント全体の IAM ロールのいずれかの名前に置き換えます。完全な ARN ではなく、ロール名を指定します。$ aws iam list-roles を実行して、アカウントのロールを一覧表示できます。
    2. インラインポリシーを削除します。

      $ aws iam delete-role-policy --role-name <account_wide_role_name> --policy-name <inline_role_policy_name>1
      1
      <inline_role_policy_name> を前述のコマンドの出力に含まれるポリシー名に置き換えます。
    3. ロールを削除します。

      $ aws iam delete-role --role-name <account_wide_role_name>
    4. 手順を繰り返して、アカウント全体の各ロールを削除します。

9.3. AWS IAM コンソールを使用した AWS リソースの削除

Red Hat OpenShift Service on AWS (ROSA) クラスターを削除した後に、AWS Identity and Access Management (IAM) Console を使用して AWS Security Token Service (STS) リソースを削除できます。

重要

アカウント全体の IAM ロールおよびポリシーは、同じ AWS アカウントの他の ROSA クラスターによって使用される可能性があります。他のクラスターで必要とされていない場合にのみ、リソースを削除する必要があります。

前提条件

  • ROSA クラスターを削除している。詳細は、「クラスターの削除」セクションを参照してください。

    重要

    IAM ロールおよびポリシーを削除する前にクラスターを削除する必要があります。インストーラーで作成されたリソースを削除するために、アカウント全体のロールが必要です。クラスター固有の Operator ロールは、OpenShift Operator によって作成されるリソースをクリーンアップするために必要です。

手順

  1. AWS IAM コンソール にログインします。
  2. クラスターで Operator 認証用に作成した OpenID Connect (OIDC) プロバイダーを削除します。

    1. Access managementIdentity providers に移動し、作成した OIDC リソースをクリックし、クラスター Operator を認証します。
    2. リソースのダイアログページで、Delete を選択して OIDC プロバイダーを削除します。
  3. クラスター固有の Operator IAM ロールを削除します。

    ヒント

    IAM ロールおよびポリシー名には、STS リソースの作成時に指定されるロールプレフィックスが含まれます。デフォルトの接頭辞は ManagedOpenShift です。

    1. Access managementRoles に移動し、クラスター用に作成したクラスター固有の Operator ロールをクリックします。
    2. リソースのダイアログページで、Delete role を選択してロールを削除します。Yes, delete を選択して、ロールの削除を確定します。
    3. この手順を繰り返し、クラスターの各クラスター固有の Operator ロールを削除します。
  4. STS を使用する ROSA デプロイメント用に作成したアカウント全体の Operator ポリシーを削除します。

    1. Access managementPolicies に移動し、Operator ポリシーのいずれかをクリックします。
    2. リソースのダイアログページで、Delete policy を選択してポリシーを削除します。Delete を選択して、ポリシーの削除を確定します。
    3. この手順を繰り返して、各 Operator ポリシーを削除します。
  5. STS を使用する ROSA デプロイメント用に作成したアカウント全体の IAM ロールおよびインラインポリシーを削除します。

    1. Access managementRoles に移動し、アカウント全体のロールをクリックします。
    2. リソースのダイアログページで、Delete role を選択してロールを削除します。Yes, delete を選択して、ロールの削除を確定します。
    3. この手順を繰り返して、クラスターのアカウント全体の各ロールを削除します。