View a markdown version of this page

IAM 역할 및 권한 참조 - AWS 복원력 허브

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

IAM 역할 및 권한 참조

평가를 위한 IAM 역할

평가를 실행하려면 차세대 Resilience Hub가 리소스 구성을 검색하고 이해하기 위해 여러 읽기 전용 권한이 있는 IAM 역할을 수임할 수 있어야 합니다 AWS .

IAM 콘솔에서 AWS IAM 역할을 생성할 수 있습니다. 사용자 지정 신뢰 정책을 선택하고 다음과 같은 신뢰 정책을 사용합니다.

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

권한에서 AWSResilienceHubV2AssessmentExecutionPolicy 관리형 정책을 선택합니다. 이 정책은 복원력 검색, 평가 및 관리를 위한 AWS 서비스에 대한 읽기 전용 액세스 권한을 부여합니다.

참고

는 차세대 Resilience HubAWSResilienceHubAsssessmentExecutionPolicy와 함께 사용할 이전를 AWSResilienceHubV2AssessmentExecutionPolicy 대체합니다. 이 정책에 포함된 권한에 대한 자세한 내용은 AWSResilienceHubV2AssessmentExecutionPolicy 섹션을 참조하세요.

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 권한

차세대 Resilience Hub 서비스에 Amazon EKS 클러스터를 포함하는 경우 다음 3단계 프로세스에 따라 Kubernetes 역할 기반 액세스 제어(RBAC)를 사용하여 Amazon EKS 클러스터의 구성 데이터를 읽을 수 있는 차세대 Resilience Hub 권한을 제공합니다.

1단계: Amazon EKS 클러스터에 다음 적용

이렇게 하면 모든 네임스페이스에서 필요한 Kubernetes 리소스에 대한 차세대 Resilience Hub 읽기 전용 액세스 권한이 부여됩니다.

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 역할을 resilience-hub-eks-access-group Kubernetes 그룹에 매핑합니다. Amazon EKS 액세스 항목(권장) 또는 aws-auth ConfigMap을 사용할 수 있습니다.

옵션 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"