

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

# IAM ロールとアクセス許可のリファレンス
<a name="next-gen-iam-reference"></a>

**評価用の 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"
```