# Профиль экземпляра EC2

Определите роль IAM для Qlik-управляемых экземпляров EC2. Эта роль будет использоваться экземплярами, запущенными в среде AWS Lakehouse.

Профиль экземпляра EC2 — это контейнер для роли IAM, которую можно назначить экземпляру EC2. Такой механизм позволит экземпляру безопасно обращаться к службам AWS без необходимости хранить учетные данные AWS.

При запуске экземпляра с этим профилем приложения, работающие на этом экземпляре, автоматически получают временные учетные данные соответствующей роли IAM через службу метаданных экземпляра. Экземпляр в этом случае сможет выполнять авторизованные API-запросы к таким сервисам AWS, как Amazon S3, DynamoDB или CloudWatch.

Использование профилей экземпляров повышает безопасность и упрощает управление данными доступа, так как:

* не нужно жестко прописывать данные доступа в коде приложения или в конфигурационных файлах;

* ротация данных доступа происходит автоматически;

* применяется принцип наименьших привилегий — через дробные IAM-политики, привязанные к роли.

Профили экземпляров широко используются в сценариях, в которых экземпляры EC2 должны безопасно взаимодействовать с другими ресурсами AWS через программные средства.

## Необходимые условия

Необходимо создать виртуальную частную сеть (VPC) и настроить подсеть и зоны доступности для размещения Открытое озеро данных Qlik. Кроме того, необходимо следующее:

* URL-адрес блока S3 для Qlik, в котором будут храниться внутренние файлы метаданных.

## Создание профиля экземпляра

Чтобы создать роль управления:

1. В консоли AWS перейдите в раздел IAM

2. В разделе Roles (Роли) нажмите Create role (Создать роль) и настройте роль:

   * Trusted entity type (Тип доверенной сущности): в списке выберите AWS service.

   * Service or use case (Сервис или использование): выберите EC2.

   * Use case (Использование): выберите EC2.

3. Создайте роль. Вернитесь на страницу Roles и нажмите на только что созданную роль.

4. Нажмите Copy рядом с именем Instance profile ARN(Профиль экземпляра ARN) и сохраните это значение.

5. Нажмите Add permissions (Добавить разрешения) и выберите Create inline policy (Создать внутреннюю политику).

6. Policy editor (Редактор политики): выберите JSON. Вставьте следующий текст и проверьте, что:

   * В параметре &lt;BUCKET\_NAME&gt; введите [Блок S3](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Lakehouse/s3-bucket.htm).

```

			{
			"Version": "2012-10-17",
			"Statement": [
			{
			"Effect": "Allow",
			"Action": [
			"ec2:AttachVolume",
			"ec2:DetachVolume",
			"autoscaling:SetInstanceHealth"
			],
			"Resource": "*",
			"Condition": {
			"Null": {
			"aws:ResourceTag/qlik_cluster": "false"
			}
			}
			},
			{
			"Effect": "Allow",
			"Action": "cloudwatch:PutMetricData",
			"Resource": "*"
			},
			{
			"Effect": "Allow",
			"Action": [
			"s3:PutObject",
			"s3:GetObject",
			"s3:AbortMultipartUpload",
			"s3:DeleteObjectVersion",
			"s3:ListBucket",
			"s3:DeleteObject",
			"s3:GetObjectVersion"
			],
			"Resource": [
			"arn:aws:s3:::<BUCKET_NAME>",
			"arn:aws:s3:::<BUCKET_NAME>/*"
			]
			},
			{
			"Effect": "Allow",
			"Action": [
			"ssm:GetParameter",
			"ssm:PutParameter"
			],
			"Resource": "arn:aws:ssm:*:*:parameter/qlik/*"
			},
			{
			"Effect": "Allow",
			"Action": "kms:*",
			"Resource": "<SYMMETRIC_KMS_KEY>"
			},
			{
			"Effect": "Allow",
			"Action": "sts:AssumeRole",
			"Resource": "*",
			"Condition": {
			"StringEquals": {
			"sts:ExternalId": "6b69f9c3c8f502f2ddfc8434d443f172ebe4c032f4ef1a3c51215d27a58ca799"
			}
			}
			}
			]
			}
		
```

## Объяснение разрешений

В следующей таблице приводится объяснение разрешений, предоставляемых экземпляру EC2:

| Политика | Разрешения | Объяснение |
| --- | --- | --- |
| Attach Volume Policy | ```<br>{<br>"Version": "2012-10-17",<br>"Effect": "Allow",<br>"Resource": [<br>"*"<br>],<br>"Action": [<br>"ec2:AttachVolume",<br>"ec2:DetachVolume",<br>"autoscaling:SetInstanceHealth"<br>],<br>"Condition": {<br>"Null": {<br>"aws:ResourceTag/qlik_cluster": "false"<br>}<br>}<br>}<br>]<br>}<br><br><br>``` | Политика присоединения тома дает экземплярам EC2 разрешение на присоединение томов Persistent EBS, созданных в Qlik. Ее применение позволяет сохранять данные между обновлениями машины-шлюза. |
| CloudWatch | ```<br>{<br>"Version": "2012-10-17",<br>"Effect": "Allow",<br>"Resource": [<br>"*"<br>],<br>"Action": [<br>"cloudwatch:PutMetricData"<br>}<br>]<br>}<br><br><br>``` | Эта политика позволяет экземплярам EC2 передавать в CloudWatch пользовательские метрики, которые используются для автоматического масштабирования кластеров Qlik в зависимости от производительности программного обеспечения. |
| Internal Bucket | ```<br>{<br>"Version": "2012-10-17",<br>"Effect": "Allow",<br>"Resource": [<br>"arn:aws:s3:::<BUCKET_NAME>",<br>"arn:aws:s3:::<BUCKET_NAME>/*"<br>],<br>"Action": [<br>"s3:PutObject",<br>"s3:GetObject",<br>"s3:AbortMultipartUpload",<br>"s3:DeleteObjectVersion",<br>"s3:ListBucket",<br>"s3:DeleteObject",<br>"s3:GetObjectVersion"<br>]<br>}<br>]<br>}<br><br><br>``` | Политика разрешает экземплярам EC2 хранить, читать и удалять внутренние данные. Внутренние данные содержат реальные пользовательские данные, которые временно хранятся для обработки. &lt;BUCKET\_NAME&gt; — это значение, задаваемое пользователем. |