View a markdown version of this page

Peran IAM dan referensi izin - AWS Pusat Ketahanan

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

Peran IAM untuk penilaian dan pengujian ketahanan

Untuk menjalankan penilaian atau uji ketahanan, generasi Resilience Hub berikutnya harus dapat mengambil peran IAM. Penilaian memerlukan izin baca-saja untuk menemukan dan memahami konfigurasi sumber daya Anda AWS . Pengujian ketahanan juga memerlukan izin untuk memulai dan mengelola eksperimen AWS Fault Injection Service (AWS FIS) atas nama Anda.

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, lampirkan kebijakan AWSResilienceHubV2AssessmentExecutionPolicy terkelola. Kebijakan ini memberikan akses baca-saja ke AWS layanan untuk penemuan ketahanan, penilaian, dan manajemen.

catatan

Ini AWSResilienceHubV2AssessmentExecutionPolicy menggantikan yang sebelumnya AWSResilienceHubAsssessmentExecutionPolicy untuk digunakan dengan Resilience Hub generasi berikutnya. Untuk detail tentang izin yang disertakan dalam kebijakan ini, lihatAWSResilienceHubV2AssessmentExecutionPolicy.

Jika Anda menggunakan pengujian ketahanan, lampirkan juga kebijakan ter AWSResilienceHubResilienceTestingPolicy kelola. Kebijakan ini memberikan Resilience Hub AWS FIS izin yang diperlukan untuk memulai dan mengelola eksperimen atas nama Anda.

catatan

Jika kebijakan terkelola tidak tersedia di akun Anda, buat kebijakan sebaris dengan izin yang sama. Untuk isi kebijakan, lihatAWSResilienceHubResilienceTestingPolicy.

Peran IAM Service-Linked

Resilience Hub generasi berikutnya secara otomatis membuat Service-Linked Peran dengan kebijakan AWSResilienceHubServiceRolePolicy terkelola.

Izin akses file status terraform

Jika Anda menyertakan file status Terraform ke dalam layanan Resilience Hub 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" } ] }

Peran eksekusi IAM untuk pengujian ketahanan

Tes ketahanan dijalankan di bawah peran IAM yang AWS Fault Injection Service mengasumsikan untuk menyuntikkan kesalahan ke sumber daya Anda. Izin yang diperlukan bergantung pada template pengujian, dan pengujian akun tunggal dan multi-akun menggunakan struktur peran yang berbeda. Untuk kebijakan kepercayaan dan izin untuk setiap pengujian, lihatPeran eksekusi IAM untuk pengujian ketahanan.

Izin Amazon EKS

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

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

Ini memberikan akses read-only Hub Resilience Hub generasi berikutnya ke sumber daya Kubernetes yang dibutuhkannya di semua ruang nama:

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 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 aws-aut ConfigMap h 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 bahwa 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"