

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

# 필수 IAM 권한 및 역할
<a name="next-gen-iam-permissions"></a>

**AWS 관리형 정책**

`AWSResilienceHubV2AssessmentExecutionPolicy`을 IAM 자격 증명에 연결할 수 있습니다. 평가를 실행하는 동안이 정책은 복원력 검색, 평가 및 관리를 위해 다른 AWS 서비스에 읽기 전용 액세스 권한을 부여합니다. 이 정책에 포함된 권한에 대한 자세한 내용은 [AWSResilienceHubV2AssessmentExecutionPolicy](next-gen-security-iam-awsmanpol.md#next-gen-security_iam_aws-v2-assessment-policy) 섹션을 참조하세요.

**참고**  
는 이전를 차세대 Resilience Hub`AWSResilienceHubAsssessmentExecutionPolicy`와 대체`AWSResilienceHubV2AssessmentExecutionPolicy`합니다.

복원력 테스트를 사용하는 경우 `AWSResilienceHubResilienceTestingPolicy` 관리형 정책도 연결합니다. 이 정책은 사용자를 대신하여 실험을 시작하고 관리하는 데 필요한 AWS Fault Injection Service (AWS FIS) 권한을 Resilience Hub에 부여합니다. 이 정책에 포함된 권한에 대한 자세한 내용은 [AWSResilienceHubResilienceTestingPolicy](next-gen-security-iam-awsmanpol.md#next-gen-security_iam_aws-resilience-testing-policy) 섹션을 참조하세요.

**참고**  
계정에서 관리형 정책을 사용할 수 없는 경우 동일한 권한으로 인라인 정책을 생성합니다. 정책 내용은 섹션을 참조하세요[AWSResilienceHubResilienceTestingPolicy](next-gen-security-iam-awsmanpol.md#next-gen-security_iam_aws-resilience-testing-policy).

**평가 및 복원력 테스트를 위한 IAM 역할**

평가 또는 복원력 테스트를 실행하려면 차세대 Resilience Hub가 필요한 권한이 있는 IAM 역할을 수임해야 합니다. 이 역할은 리소스의 AWS 구성을 검색하고 읽으며, 복원력 테스트가 활성화되면가 AWS FIS 사용자를 대신하여 실험을 시작하고 관리합니다.

이 역할을 생성하거나 구성하는 방법에는 두 가지가 있습니다.
+ **새 서비스 역할 생성(권장)** - 차세대 Resilience Hub 콘솔에서 서비스를 생성하거나 편집할 때 **권한 모델에서** **새 역할 생성을** 선택할 수 있습니다. 콘솔은 올바른 신뢰 정책을 사용하여 IAM 역할을 자동으로 생성하고 `AWSResilienceHubV2AssessmentExecutionPolicy` 관리형 정책을 연결합니다.
+ **기존 서비스 역할 사용** - 이미 역할이 구성되어 있거나 콘솔 외부에서 역할을 생성하려면 **기존 서비스 역할 사용을** 선택합니다. 그런 다음 목록에서 역할을 선택하고 역할에 아래에 설명된 필수 신뢰 정책 및 권한이 있는지 확인합니다.

역할을 수동으로 생성하려면 IAM 콘솔을 엽니다. **사용자 지정 신뢰 정책을** 선택하고 다음과 같은 신뢰 정책을 사용합니다.

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

권한의 경우 `AWSResilienceHubV2AssessmentExecutionPolicy` 관리형 정책을 연결합니다. 복원력 테스트를 사용하는 경우 `AWSResilienceHubResilienceTestingPolicy` 관리형 정책도 연결합니다.

**IAM 서비스 연결 역할**

차세대 Resilience Hub는 `AWSResilienceHubServiceRolePolicy` 관리형 정책을 사용하여 서비스 연결 역할을 자동으로 생성합니다.

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