2.5. IAM ポリシーと AWS 認証
デフォルトでは、インストールプログラムは、ブートストラップ、コントロールプレーン、およびコンピュートインスタンスのインスタンスプロファイルを作成し、クラスターの動作に必要な権限を付与します。
シングルノードの OpenShift クラスターでインストール後のタスクとして Amazon Elastic Container Registry (ECR) からイメージをプルできるようにするには、クラスターのコントロールプレーンロールに関連付けられた IAM ロールに AmazonEC2ContainerRegistryReadOnly
ポリシーを追加する必要があります。
ただし、独自の IAM ロールを作成して、インストールプロセスの一部として指定できます。クラスターをデプロイするため、またはインストール後にクラスターを管理するために、独自のロールを指定する必要がある場合があります。以下に例を示します。
- 組織のセキュリティーポリシーでは、より制限的なアクセス許可セットを使用してクラスターをインストールする必要があります。
- インストール後、クラスターは、追加サービスへのアクセスを必要とする Operator で設定されます。
独自の IAM ロールを指定する場合は、次の手順を実行できます。
- デフォルトのポリシーから始めて、必要に応じて調整します。詳細は、「IAM インスタンスプロファイルのデフォルトのアクセス許可」を参照してください。
- AWS IAM Access Analyzer (Identity and Access Management Access Analyzer) を使用して、クラスターのアクティビティーに基づくポリシーテンプレートを作成します。詳細は、「AWS IAM Analyzer を使用してポリシーテンプレートの作成」を参照してください。
2.5.1. IAM インスタンスプロファイルのデフォルトのアクセス許可
デフォルトでは、インストールプログラムは、ブートストラップ、コントロールプレーン、およびワーカーインスタンスの IAM インスタンスプロファイルを作成し、クラスターの動作に必要な権限を付与します。
次のリストでは、コントロールプレーンとコンピュートマシンのデフォルトのアクセス許可を指定します。
例2.16 コントロールプレーンインスタンスのプロファイル向けデフォルト IAM ロールのパーミッション
-
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
例2.17 コンピュートインスタンスプロファイル向けデフォルト IAM ロールのパーミッション
-
ec2:DescribeInstances
-
ec2:DescribeRegions
2.5.2. 既存の IAM ロールの指定
インストールプログラムがデフォルトのアクセス許可で IAM インスタンスプロファイルを作成できるようにする代わりに、install-config.yaml
ファイルを使用して、コントロールプレーンとコンピュートインスタンスの既存の IAM ロールを指定できます。
前提条件
-
既存の
install-config.yaml
ファイルがある。
手順
コンピュートマシンの既のロールを使用して
compute.platform.aws.iamRole
を更新します。コンピュートインスタンスの IAM ロールを含む
install-config.yaml
ファイルのサンプルcompute: - hyperthreading: Enabled name: worker platform: aws: iamRole: ExampleRole
コントロールプレーンマシンの既存ロールを使用して
controlPlane.platform.aws.iamRole
を更新します。コントロールプレーンインスタンスの IAM ロールを含む
install-config.yaml
ファイルのサンプルcontrolPlane: hyperthreading: Enabled name: master platform: aws: iamRole: ExampleRole
- ファイルを保存し、OpenShift Container Platform クラスターのインストール時に参照します。
クラスターのインストール後に IAM アカウントを変更または更新する場合は、RHOCP 4 AWS cloud-credentials access key is expired (Red Hat ナレッジベース) を参照してください。
関連情報
2.5.3. AWS IAM Analyzer を使用してポリシーテンプレートの作成
コントロールプレーンとコンピュートインスタンスプロファイルに必要な最小限のアクセス許可セットは、クラスターが日常の運用のためにどのように設定されているかによって異なります。
クラスターインスタンスに必要なアクセス許可を決定する 1 つの方法は、IAM Access Analyzer (AWS Identity and Access Management Access Analyzer) を使用してポリシーテンプレートを作成することです。
- ポリシーテンプレートには、クラスターが指定された期間に使用したアクセス許可が含まれています。
- その後、テンプレートを使用して、きめ細かい権限を持つポリシーを作成できます。
手順
全体的なプロセスは次のようになります。
- CloudTrail が有効になっていることを確認します。CloudTrail は、ポリシーテンプレートの作成に必要な API 呼び出しを含め、AWS アカウントのすべてのアクションとイベントを記録します。詳細は、CloudTrail の操作 に関する AWS ドキュメントを参照してください。
- コントロールプレーンインスタンスのインスタンスプロファイルとコンピューティングインスタンスのインスタンスプロファイルを作成します。PowerUserAccess などの寛容なポリシーを各ロールに割り当ててください。詳細は、インスタンスプロファイルロールの作成 に関する AWS ドキュメントを参照してください。
- クラスターを開発環境にインストールし、必要に応じて設定します。クラスターが本番環境でホストするすべてのアプリケーションを必ずデプロイしてください。
- クラスターを徹底的にテストします。クラスターをテストすると、必要なすべての API 呼び出しがログに記録されることが保証されます。
- IAM Access Analyzer を使用して、各インスタンスプロファイルのポリシーテンプレートを作成します。詳細は、CloudTrail ログに基づいてポリシーを生成する ための AWS ドキュメントを参照してください。
- きめ細かいポリシーを作成し、各インスタンスプロファイルに追加します。
- 各インスタンスプロファイルから許容ポリシーを削除します。
- 新しいポリシーで既存のインスタンスプロファイルを使用して実稼働クラスターをデプロイします。
ポリシーに IAM 条件 を追加して、ポリシーをより制限し、組織のセキュリティー要件に準拠させることができます。