# Rola zarządzania

Utwórz rolę zarządzania, aby umożliwić Qlik Cloud konfigurowanie instancji i elastycznych adresów IP w środowisku lakehouse.

Rola zarządzania to rola IAM, którą tworzysz w celu przyznania Qlik niezbędnych uprawnień do interakcji ze środowiskiem AWS w Twoim imieniu. Ta rola jest przejmowana przez Qlik podczas wdrożenia i operacji wykonawczych w celu bezpiecznego dostępu i zarządzania zasobami AWS wymaganymi dla Twojego lakehouse Iceberg.

Rola jest powiązana z niestandardową zasadą IAM, która definiuje konkretne działania, do których wykonywania Qlik ma upoważnienie – takich jak odczyt i zapis do zasobników S3, zarządzanie instancjami EC2 i interakcja z innymi usługami, takimi jak AWS Glue lub KMS.

Rola ta zapewnia bezpieczny, najmniej uprzywilejowany dostęp, jednocześnie umożliwiając Qlik automatyzację i orkiestrację kluczowych zadań, takich jak zarządzanie metadanymi, przenoszenie danych i wykonywanie zadań na koncie AWS.

Aby działać poprawnie, rola musi zostać utworzona z wymaganą relacją zaufania i zasadami uprawnień, zgodnie z instrukcjami konfiguracji.

## Wymagania wstępne

Upewnij się, że utworzono VPC i podsieć oraz Strefy dostępności do hostowania Otwarty lakehouse Qlik, i przygotuj następujące dane:

* Identyfikator konta AWS.

* ARN symetrycznego klucza KMS.

## Tworzenie roli zarządzającej

Aby utworzyć rolę zarządzającą, należy wykonać następujące czynności:

1. W konsoli AWS przejdź do IAM

2. W sekcji Role kliknij przycisk Utwórz rolę i skonfiguruj ją:

   * Typ zaufanego podmiotu: wybierz opcję Niestandardowa zasada zaufania.

   * Oświadczenie: w okienku kodu wklej zasadę Podmiotu zaufanego utworzoną w Przewodniku konfiguracji roli w Qlik Cloud.

3. Utwórz rolę i zanotuj wartość ARN. Powinna ona mieć następujący format:

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

## Tworzenie zasady

1. W IAM kliknij Role i wybierz rolę utworzoną powyżej.

2. Kliknij przycisk Dodaj uprawnienia.

3. Wybierz Utwórz zasadę wbudowaną.

4. W Edytorze zasad wybierz JSON. Wklej poniższy tekst i dodatkowo:

* Zmień parametr &lt;AWS\_ACCOUNT\_ID&gt; na swoje konto.

* Zaktualizuj wartość &lt;KMS\_SYMMETRIC\_KEY\_ARN&gt; za pomocą ARN swojego klucza .

```

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

## Uzasadnienie wymagania uprawnień

Poniższa tabela zawiera objaśnienia poszczególnych uprawnień roli administratora:

| Zasada | Uprawnienia | Objaśnienie |
| --- | --- | --- |
| EC2 – działania związane z zarządzaniem zasobami | ```<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>``` | Ta zasada przyznaje Qlik uprawnienie do zarządzania instancjami i zasobami EC2, takimi jak woluminy, grupy zabezpieczeń i podsieci. Nie uwzględnia żadnych warunków, ponieważ wszystkie metody opisują lub tworzą działania. |
| EC2 – działania związane z manipulowaniem zasobami | ```<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>``` | Ta zasada udziela Qlik uprawnień do zarządzania instancjami EC2 i zasobami utworzonymi przez Qlik na podstawie znacznika qlik\_cluster. Uprawnienia obejmują takie działania, jak dołączanie woluminów, zamykanie instancji i modyfikowanie szablonów uruchamiania. |
| EC2 – działania związane z weryfikacją | ```<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>``` | Ta zasada udziela Qlik uprawnień do sprawdzania poprawności danych wejściowych podczas tworzenia integracji sieciowych. Działania te nie są obowiązkowe i są wymagane tylko w przypadku podania określonych danych wejściowych. |
| IAM – działania profilu instancji | ```<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>``` | Ta zasada umożliwia roli zarządzania obsługę profili instancji EC2, w tym wykonywanie takich działań, jak tworzenie ról powiązanych z usługami i przekazywanie ról do instancji EC2. |
| STS – działanie autoryzacyjne | ```<br>"Version": "2012-10-17","Statement": [{"Action": "sts:DecodeAuthorizationMessage","Effect": "Allow","Resource": "*"}]}{<br>``` | Ta polityka przyznaje Qlik uprawnienia do dekodowania komunikatów autoryzacyjnych, aby pomóc w rozwiązywaniu problemów z autoryzacją. |
| SSM – tajne działania zarządcze | ```<br>"Version": "2012-10-17","Statement": [{"Action": ["ssm:PutParameter"],"Effect": "Allow","Resource": "arn:aws:ssm:*:<AWS_ACCOUNT_ID>:parameter/qlik/*",}]}{<br>``` | Ta zasada przyznaje roli zarządzania uprawnienia do przechowywania wpisów tajnych w AWS Systems Manager Parameter Store. Te tajne wpisy będą odczytywane przez instancje udostępnione przez Qlik.&lt;AWS\_ACCOUNT\_ID&gt; to wartość skonfigurowana przez użytkownika |
| 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>``` | Ta zasada nadaje Qlik uprawnienia do generowania par kluczy szyfrujących bez dostępu do klucza prywatnego oraz do szyfrowania danych, które będą odczytywane i odszyfrowywane przez maszyny udostępnione przez Qlik. &lt;KMS\_SYMMETRIC\_KEY\_ARN&gt; jest wartością skonfigurowaną przez użytkownika. |