

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Peran IAM dan referensi izin
<a name="next-gen-iam-reference"></a>

**Peran IAM untuk penilaian**

Untuk menjalankan penilaian, Resilience Hub generasi berikutnya harus dapat mengambil peran IAM dengan sejumlah izin hanya-baca untuk menemukan dan memahami konfigurasi sumber daya Anda. AWS 

Anda dapat membuat peran IAM di konsol AWS IAM. Pilih **Kebijakan kepercayaan khusus** dan gunakan kebijakan kepercayaan seperti ini:

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

Untuk izin, pilih kebijakan `AWSResilienceHubAsssessmentExecutionPolicy` terkelola dan kebijakan `ReadOnlyAccess` terkelola. `ReadOnlyAccess`Kebijakan ini diperlukan untuk kinerja terbaik dari penilaian mode kegagalan.

**Peran IAM Service-Linked **

Resilience Hub generasi berikutnya secara otomatis membuat Service-Linked Peran dengan kebijakan `AWSResilienceHubServiceRolePolicy` terkelola. Peran ini hanya diperlukan untuk dukungan AWS Organizations.

**Izin akses file status Terraform**

Jika Anda menyertakan file status Terraform ke dalam layanan Hub Ketahanan generasi berikutnya, berikan izin untuk membaca file Terraform dari bucket Amazon S3 Anda dengan kebijakan seperti ini:

```
{
  "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}}"
    }
  ]
}
```

**Izin Amazon EKS**

Jika Anda menyertakan kluster Amazon EKS ke dalam layanan Next generation Resilience Hub, ikuti proses 3 langkah berikut untuk memberikan izin Resilience Hub generasi berikutnya untuk membaca data konfigurasi kluster Amazon EKS Anda menggunakan kontrol akses berbasis peran Kubernetes (RBAC).

**Langkah 1: Terapkan yang berikut ini ke cluster Amazon EKS Anda**

Ini memberi Next generation Resilience Hub akses read-only ke resource Kubernetes yang dibutuhkan di semua namespace:

```
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
```

**Langkah 2: Petakan peran IAM ke grup Kubernetes**

Petakan peran IAM yang Anda buat ke grup `resilience-hub-eks-access-group` Kubernetes. Anda dapat menggunakan entri akses Amazon EKS (disarankan) atau entri akses. `aws-auth` ConfigMap

**Opsi A: Menggunakan entri akses EKS (disarankan)**

Entri akses EKS adalah metode yang disukai untuk mengelola otentikasi cluster. Cluster Anda harus menggunakan `API` atau mode `API_AND_CONFIG_MAP` otentikasi.

```
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"]'
```

**Opsi B: Menggunakan aws-auth ConfigMap**

Jika cluster Anda menggunakan `CONFIG_MAP` atau mode `API_AND_CONFIG_MAP` otentikasi, Anda dapat mengedit ConfigMap aws-auth sebagai gantinya:

Menggunakan 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
```

Atau edit secara manual ConfigMap:

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

Tambahkan ini `mapRoles` di bawah di bagian data:

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

**Langkah 3: Verifikasi**

Konfirmasikan sumber daya RBAC ada dan pemetaan peran sudah ada:

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

Jika menggunakan entri akses (Opsi A):

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

Jika menggunakan aws-auth ConfigMap (Opsi B):

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