# 관리 역할

Qlik Cloud가 레이크하우스 환경 내에서 인스턴스와 탄력적 IP를 구성할 수 있도록 관리 역할을 만듭니다.

관리 역할은 Qlik에게 사용자를 대신하여 AWS 환경과 상호 작용하는 데 필요한 권한을 부여하기 위해 만드는 IAM 역할입니다. 이 역할은 배포 및 런타임 작업 중에 Qlik에서 수행하여 Iceberg 레이크하우스에 필요한 AWS 리소스에 안전하게 액세스하고 관리합니다.

이 역할은 Qlik이 S3 버킷에서 읽기 및 쓰기, EC2 인스턴스 관리, AWS Glue 또는 KMS와 같은 다른 서비스와의 상호 작용 등 수행할 수 있는 특정 작업을 정의하는 사용자 지정 IAM 정책과 연결됩니다.

이 역할은 Qlik이 AWS 계정 내에서 메타데이터 관리, 데이터 이동, 작업 실행과 같은 주요 작업을 자동화하고 조정할 수 있도록 하는 동시에 안전하고 권한이 적은 액세스를 보장합니다.

올바르게 작동하려면 설정 지침에 설명된 대로 필요한 신뢰 관계 및 권한 정책을 사용하여 역할을 만들어야 합니다.

## 전제 조건

Qlik 오픈 레이크하우스를 호스팅하기 위해 VPC와 서브넷, 가용성 영역을 만들었는지 확인하고 다음 세부 정보가 있는지 확인합니다.

* AWS 계정 ID.

* 대칭 KMS 키 ARN.

## 관리 역할 만들기

관리 역할을 만들려면 다음을 수행합니다.

1. AWS 콘솔에서 IAM으로 이동합니다.

2. 역할에서 역할 만들기를 클릭하고 다음과 같이 구성합니다.

   * 신뢰할 수 있는 엔터티 유형: 사용자 지정 신뢰 정책을 선택합니다.

   * 설명: 코드 창에서 Qlik Cloud의 관리 역할 구성 가이드에서 만든 신뢰할 수 있는 엔터티 정책을 붙여넣습니다.

3. 역할을 만들고 ARN 값을 기록해 둡니다. 다음과 같은 형식으로 작성해야 합니다.

   arn:aws:iam::&lt;ACCOUNT\_ID&gt;:role/&lt;ROLE\_NAME&gt;.

## 정책 만들기

1. IAM에서 역할을 클릭하고 위에서 만든 역할을 선택합니다.

2. 권한 추가를 클릭합니다.

3. 인라인 정책 만들기를 선택합니다.

4. 정책 편집기에서 JSON을 선택합니다. 다음 텍스트를 붙여넣고, 다음을 확인합니다.

* &lt;AWS\_ACCOUNT\_ID&gt; 매개 변수를 사용자의 계정으로 변경합니다.

* &lt;KMS\_SYMMETRIC\_KEY\_ARN&gt; 값을 키 ARN으로 업데이트합니다.

```

			{
			"Version": "2012-10-17",
			"Statement": [
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"ec2:CancelSpotInstanceRequests",
			"ec2:CreateLaunchTemplate",
			"ec2:CreateTags",
			"ec2:CreateVolume",
			"ec2:DescribeAddresses",
			"ec2:DescribeImageAttribute",
			"ec2:DescribeImages",
			"ec2:DescribeInstanceStatus",
			"ec2:DescribeInstanceTypeOfferings",
			"ec2:DescribeInstanceTypes",
			"ec2:DescribeInstances",
			"ec2:DescribeLaunchTemplateVersions",
			"ec2:DescribeLaunchTemplates",
			"ec2:DescribeSpotInstanceRequests",
			"ec2:DescribeSpotPriceHistory",
			"ec2:DescribeTags",
			"ec2:DescribeRegions",
			"ec2:DescribeSubnets",
			"ec2:DescribeRouteTables",
			"ec2:DescribeSecurityGroups",
			"ec2:RequestSpotInstances",
			"ec2:DescribeVolumes"
			]
			},
			{
			"Effect": "Allow",
			"Resource": [
			"arn:aws:ec2:*::image/*",
			"arn:aws:ec2:*:*:instance/*",
			"arn:aws:ec2:*:*:key-pair/*",
			"arn:aws:ec2:*:*:launch-template/*",
			"arn:aws:ec2:*:*:network-interface/*",
			"arn:aws:ec2:*:*:security-group/*",
			"arn:aws:ec2:*:*:subnet/*",
			"arn:aws:ec2:*:*:volume/*"
			],
			"Action": [
			"ec2:RunInstances"
			]
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"ec2:AttachVolume",
			"ec2:DeleteVolume",
			"ec2:DetachVolume",
			"ec2:DeleteLaunchTemplate",
			"ec2:TerminateInstances",
			"ec2:StartInstances",
			"ec2:ModifyLaunchTemplate",
			"ec2:DeleteLaunchTemplateVersions",
			"ec2:CreateLaunchTemplateVersion"
			],
			"Condition": {
			"Null": {
			"aws:ResourceTag/qlik_cluster": "false"
			}
			}
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"autoscaling:DeleteAutoScalingGroup",
			"autoscaling:DeletePolicy",
			"autoscaling:DeleteTags",
			"autoscaling:PutScalingPolicy",
			"autoscaling:StartInstanceRefresh",
			"autoscaling:TerminateInstanceInAutoScalingGroup",
			"autoscaling:UpdateAutoScalingGroup"
			],
			"Condition": {
			"Null": {
			"aws:ResourceTag/qlik_cluster": "false"
			}
			}
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"autoscaling:CreateAutoScalingGroup",
			"autoscaling:CreateOrUpdateTags",
			"autoscaling:DescribeAutoScalingGroups",
			"autoscaling:DescribeInstanceRefreshes",
			"autoscaling:DescribePolicies",
			"autoscaling:DescribeScalingActivities",
			"autoscaling:DescribeTags"
			]
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"ec2:DescribeRegions",
			"ec2:DescribeSubnets",
			"ec2:DescribeRouteTables",
			"ec2:DescribeSecurityGroups",
			"ec2:DescribeKeyPairs"			
			]
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"cloudwatch:DescribeAlarmHistory",
			"cloudwatch:DescribeAlarms",
			"cloudwatch:DescribeAlarmsForMetric",
			"cloudwatch:GetMetricStatistics",
			"cloudwatch:ListMetrics",
			"cloudwatch:PutMetricData"
			]
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"cloudwatch:DeleteAlarms"
			],
			"Condition": {
			"Null": {
			"aws:ResourceTag/qlik_cluster": "false"
			}
			}
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"cloudwatch:PutMetricAlarm"
			],
			"Condition": {
			"Null": {
			"aws:RequestTag/qlik_cluster": "false"
			}
			}
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"iam:AddRoleToInstanceProfile",
			"iam:CreateServiceLinkedRole",
			"iam:GetPolicy",
			"iam:GetPolicyVersion",
			"iam:ListAccountAliases",
			"iam:ListAttachedRolePolicies",
			"iam:ListInstanceProfiles",
			"iam:ListInstanceProfilesForRole",
			"iam:ListPolicies",
			"iam:ListRoles",
			"iam:PassRole"
			]
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"sts:DecodeAuthorizationMessage"
			]
			},
			{
			"Effect": "Allow",
			"Resource": [
			"arn:aws:ssm:*:<AWS_ACCOUNT_ID>:parameter/qlik/*"
				],
				"Action": [
				"ssm:PutParameter"
				]
				},
				{
				"Effect": "Allow",
				"Resource": [
				"<KMS_SYMMETRIC_KEY_ARN>"
					],
					"Action": [
					"kms:GenerateDataKeyPairWithoutPlaintext",
					"kms:Encrypt"
					]
					}
					]
					}
		
```

## 요구 사항 허가 정당성

다음 표에서는 관리 역할의 각 권한에 대해 설명합니다.

| 정책 | 권한 | 설명 |
| --- | --- | --- |
| EC2 - 리소스 관리 작업 | ```<br>{<br>"Version": "2012-10-17",<br>"Statement": [<br>{<br>"Action": [<br>"ec2:CancelSpotInstanceRequests",<br>"ec2:CreateLaunchTemplate",<br>"ec2:CreateTags",<br>"ec2:CreateVolume",<br>"ec2:DescribeAddresses",<br>"ec2:DescribeImageAttribute",<br>"ec2:DescribeImages",<br>"ec2:DescribeInstanceStatus",<br>"ec2:DescribeInstanceTypeOfferings",<br>"ec2:DescribeInstanceTypes",<br>"ec2:DescribeInstances",<br>"ec2:DescribeLaunchTemplateVersions",<br>"ec2:DescribeLaunchTemplates",<br>"ec2:DescribeSpotInstanceRequests",<br>"ec2:DescribeSpotPriceHistory",<br>"ec2:DescribeTags",<br>"ec2:DescribeRegions",<br>"ec2:DescribeSubnets",<br>"ec2:DescribeRouteTables",<br>"ec2:DescribeSecurityGroups",<br>"ec2:RequestSpotInstances",<br>"ec2:DescribeVolumes"<br>],<br>"Effect": "Allow",<br>"Resource": "*"<br>},<br>{<br>"Action": "ec2:RunInstances",<br>"Effect": "Allow",<br>"Resource": [<br>"arn:aws:ec2:*:*:subnet/*",<br>"arn:aws:ec2:*:*:network-interface/*",<br>"arn:aws:ec2:*::image/*"<br>]<br>}<br>]<br>}<br><br><br>``` | 이 정책은 Qlik에 볼륨, 보안 그룹, 서브넷 등의 EC2 인스턴스 및 리소스를 관리할 수 있는 권한을 부여합니다. 모든 메서드는 설명 또는 만들기 작업이므로 조건이 포함되지 않습니다. |
| EC2 - 리소스 조작 작업 | ```<br>{<br>"Version": "2012-10-17",<br>"Statement": [<br>{<br>"Action": [<br>"ec2:AttachVolume",<br>"ec2:DeleteVolume",<br>"ec2:DetachVolume",<br>"ec2:DeleteLaunchTemplate",<br>"ec2:TerminateInstances",<br>"ec2:StartInstances",<br>"ec2:ModifyLaunchTemplate",<br>"ec2:DeleteLaunchTemplateVersions",<br>"ec2:CreateLaunchTemplateVersion"<br>],<br>"Condition": {<br>"Null": {<br>"aws:ResourceTag/qlik_cluster": "false"<br>}<br>},<br>"Effect": "Allow",<br>"Resource": "*"<br>},<br>{<br>"Action": [<br>"autoscaling:PutScalingPolicy",<br>"autoscaling:UpdateAutoScalingGroup",<br>"autoscaling:DeleteAutoScalingGroup",<br>"autoscaling:DeletePolicy",<br>"autoscaling:DeleteTags",<br>"autoscaling:StartInstanceRefresh"<br>],<br>"Condition": {<br>"Null": {<br>"aws:ResourceTag/qlik_cluster": "false"<br>}<br>},<br>"Effect": "Allow",<br>"Resource": "*"<br>}<br>]<br>}<br><br><br>``` | 이 정책은 Qlik이 qlik\_cluster 태그를 기반으로 만든 EC2 인스턴스 및 리소스를 관리할 수 있는 권한을 Qlik에게 부여합니다. 권한에는 볼륨 연결, 인스턴스 종료, 시작 템플릿 수정 등의 작업이 포함됩니다. |
| EC2 - 유효성 검사 작업 | ```<br>{<br>"Version": "2012-10-17",<br>"Statement": [<br>{<br>"Sid": "VisualEditor0",<br>"Effect": "Allow",<br>"Action": [<br>"ec2:DescribeRegions",<br>"ec2:DescribeSubnets",<br>"ec2:DescribeRouteTables",<br>"ec2:DescribeSecurityGroups",<br>"ec2:DescribeKeyPairs"<br>],<br>"Resource": "*"<br>}<br>]<br>}<br><br><br>``` | 이 정책은 네트워크 통합을 만들 때 입력의 유효성을 검사할 수 있는 Qlik 권한을 부여합니다. 이러한 작업은 필수가 아니며 특정 입력이 제공되는 경우에만 필요합니다. |
| IAM - 인스턴스 프로필 작업 | ```<br>"Version": "2012-10-17","Statement": [{"Action": ["iam:AddRoleToInstanceProfile","iam:CreateServiceLinkedRole","iam:GetPolicy","iam:GetPolicyVersion","iam:ListAccountAliases","iam:ListAttachedRolePolicies","iam:ListInstanceProfiles","iam:ListInstanceProfilesForRole","iam:ListPolicies","iam:ListRoles","iam:PassRole"],"Effect": "Allow","Resource": "*"}]}{<br>``` | 이 정책을 사용하면 관리 역할이 서비스 연결 역할 만들기, EC2 인스턴스에 역할 전달 등의 작업을 포함하여 EC2 인스턴스 프로필을 처리할 수 있습니다. |
| STS - 권한 부여 작업 | ```<br>"Version": "2012-10-17","Statement": [{"Action": "sts:DecodeAuthorizationMessage","Effect": "Allow","Resource": "*"}]}{<br>``` | 이 정책은 Qlik에게 권한 부여 메시지를 디코딩하여 권한 부여 문제를 해결하는 데 도움이 되는 권한을 부여합니다. |
| SSM - 비밀 관리 작업 | ```<br>"Version": "2012-10-17","Statement": [{"Action": ["ssm:PutParameter"],"Effect": "Allow","Resource": "arn:aws:ssm:*:<AWS_ACCOUNT_ID>:parameter/qlik/*",}]}{<br>``` | 이 정책은 관리 역할에 AWS Systems Manager Parameter Store에 비밀을 저장할 수 있는 권한을 부여합니다. 이러한 비밀은 Qlik에서 프로비저닝한 인스턴스에서 읽습니다.&lt;AWS\_ACCOUNT\_ID&gt;은 사용자가 구성한 값입니다. |
| KMS | "Version": "2012-10-17",<br><br>"Statement": [<br><br>{<br><br>"Sid": "VisualEditor0",<br><br>"Effect": "Allow",<br><br>"Action": [<br><br>"kms:GenerateDataKeyPairWithoutPlaintext",<br><br>"kms:Encrypt"<br><br>],<br><br>"Resource": "&lt;KMS\_SYMMETRIC\_KEY\_ARN&gt;"<br><br>}<br><br>]<br><br>}<br><br>```<br>{<br>``` | 이 정책은 Qlik에게 개인 키에 대한 액세스 없이 암호화 키 쌍을 생성하고 Qlik에서 프로비저닝된 컴퓨터에서 읽고 복호화할 데이터를 암호화할 수 있는 권한을 부여합니다. &lt;KMS\_SYMMETRIC\_KEY\_ARN&gt;은 사용자가 구성한 값입니다. |