View a markdown version of this page

IAM ロールとアクセス許可のリファレンス - AWS レジリエンスハブ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM ロールとアクセス許可のリファレンス

評価用の IAM ロール

評価を実行するには、次世代の Resilience Hub がリソースの設定を検出して理解するために、多数の読み取り専用アクセス許可を持つ IAM ロールを AWS 引き受けることができる必要があります。

IAM コンソールで IAM AWS ロールを作成できます。カスタム信頼ポリシーを選択し、次のような信頼ポリシーを使用します。

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

アクセス許可については、 AWSResilienceHubAsssessmentExecutionPolicy管理ポリシーと ReadOnlyAccess管理ポリシーを選択します。このReadOnlyAccessポリシーは、障害モード評価の最適なパフォーマンスのために必要です。

IAM サービスにリンクされたロール

次世代 Resilience Hub は、 AWSResilienceHubServiceRolePolicyマネージドポリシーを使用してサービスにリンクされたロールを自動的に作成します。このロールは AWS Organizations のサポートにのみ必要です。

Terraform 状態ファイルアクセス許可

次世代 Resilience Hub サービスに Terraform 状態ファイルを含める場合は、次のようなポリシーを使用して Amazon S3 バケットから Terraform ファイルを読み取るアクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/path-to-state-file" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::s3-bucket-name" } ] }

Amazon EKS アクセス許可

Amazon EKS クラスターを次世代 Resilience Hub サービスに含める場合は、次の 3 ステップのプロセスに従って、Kubernetes ロールベースのアクセスコントロール (RBAC) を使用して Amazon EKS クラスターの設定データを読み取るアクセス許可を次世代 Resilience Hub に付与します。

ステップ 1: Amazon EKS クラスターに以下を適用する

これにより、次世代 Resilience Hub がすべての名前空間で必要とする Kubernetes リソースへの読み取り専用アクセスが許可されます。

cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-cluster-role rules: - apiGroups: - "" resources: - pods - replicationcontrollers - nodes - services verbs: - get - list - apiGroups: - apps resources: - deployments - replicasets verbs: - get - list - apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - apiGroups: - autoscaling.k8s.io resources: - verticalpodautoscalers verbs: - get - list - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - apiGroups: - karpenter.sh resources: - provisioners - nodepools verbs: - get - list - apiGroups: - karpenter.k8s.aws resources: - awsnodetemplates - ec2nodeclasses verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: resilience-hub-eks-access-cluster-role-binding subjects: - kind: Group name: resilience-hub-eks-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: resilience-hub-eks-access-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF

ステップ 2: IAM ロールを Kubernetes グループにマッピングする

作成した IAM ロールを Kubernetes resilience-hub-eks-access-group グループにマッピングします。Amazon EKS アクセスエントリ (推奨) または ConfigMap aws-auth を使用できます。

オプション A: EKS アクセスエントリの使用 (推奨)

EKS アクセスエントリは、クラスター認証を管理するために推奨される方法です。クラスターは APIまたは API_AND_CONFIG_MAP認証モードを使用する必要があります。

aws eks create-access-entry \ --cluster-name cluster-name \ --principal-arn arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole \ --type STANDARD \ --kubernetes-groups '["resilience-hub-eks-access-group"]'

オプション B: aws-auth ConfigMap の使用

クラスターが CONFIG_MAPまたは API_AND_CONFIG_MAP認証モードを使用している場合は、代わりに aws-auth ConfigMap を編集できます。

eksctl の使用:

eksctl create iamidentitymapping \ --cluster cluster-name \ --region region \ --arn arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole \ --group resilience-hub-eks-access-group \ --username AwsResilienceHubAssessmentEKSAccessRole

または、ConfigMap を手動で編集します。

kubectl edit -n kube-system configmap/aws-auth

データセクションmapRolesの の下にこれを追加します。

- groups: - resilience-hub-eks-access-group rolearn: arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole username: AwsResilienceHubAssessmentEKSAccessRole

ステップ 3: 検証する

RBAC リソースが存在し、ロールマッピングが設定されていることを確認します。

kubectl get clusterrole resilience-hub-eks-access-cluster-role kubectl describe clusterrolebinding resilience-hub-eks-access-cluster-role-binding

アクセスエントリ (オプション A) を使用する場合:

aws eks describe-access-entry \ --cluster-name cluster-name \ --principal-arn arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole

aws-auth ConfigMap (オプション B) を使用している場合:

kubectl get configmap aws-auth -n kube-system -o yaml | grep -A 3 "ResilienceHubRole"