Перейти к основному содержимому Перейти к дополнительному содержимому

Профиль экземпляра 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, в котором будут храниться внутренние файлы метаданных.

  • Имя потока Kinesis для 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. Вставьте следующий текст и проверьте, что:     

    • В параметре <INTERNAL_STREAM_NAME> введите свой Поток Kinesis.

    • В параметре <INTERNAL_BUCKET_NAME> введите Блок S3.


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

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

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

Политика Разрешения Объяснение
Attach Volume Policy

{

"Version": "2012-10-17",

"Effect": "Allow",

"Resource": [

"*"

],

"Action": [

"ec2:AttachVolume",

"ec2:DetachVolume",

"autoscaling:SetInstanceHealth"

],

"Condition": {

"Null": {

"aws:ResourceTag/qlik_cluster": "false"

}

}

}

]

}


                                    
Политика присоединения тома дает экземплярам EC2 разрешение на присоединение томов Persistent EBS, созданных в Qlik. Ее применение позволяет сохранять данные между обновлениями машины-шлюза.
CloudWatch

{

"Version": "2012-10-17",

"Effect": "Allow",

"Resource": [

"*"

],

"Action": [

"cloudwatch:PutMetricData"

}

]

}


                                    

Эта политика позволяет экземплярам EC2 передавать в CloudWatch пользовательские метрики, которые используются для автоматического масштабирования кластеров Qlik в зависимости от производительности программного обеспечения.

Internal Stream

{

"Version": "2012-10-17",

"Effect": "Allow",

"Resource": [

"arn:aws:kinesis:*:*:stream/<STREAM_NAME>"

],

"Action": [

"kinesis:PutRecord",

"kinesis:DescribeStreamSummary",

"kinesis:ListShards",

"kinesis:PutRecords",

"kinesis:GetShardIterator",

"kinesis:GetRecords",

"kinesis:DescribeStream",

"kinesis:ListStreamConsumers"

]

}

]

}


                                    
Эта политика дает экземплярам EC2 разрешение на взаимодействие с потоками Kinesis, используемыми службами синхронизации кластера, такими как Key-Value Store и Distributed Locks. <INTERNAL_STREAM_NAME> — это значение, задаваемое пользователем.
Internal Bucket

{

"Version": "2012-10-17",

"Effect": "Allow",

"Resource": [

"arn:aws:s3:::<BUCKET_NAME>",

"arn:aws:s3:::<BUCKET_NAME>/*"

],

"Action": [

"s3:PutObject",

"s3:GetObject",

"s3:AbortMultipartUpload",

"s3:DeleteObjectVersion",

"s3:ListBucket",

"s3:DeleteObject",

"s3:GetObjectVersion"

]

}

]

}


                                    
Политика разрешает экземплярам EC2 хранить, читать и удалять внутренние данные. Внутренние данные содержат реальные пользовательские данные, которые временно хранятся для обработки. <INTERNAL_BUCKET_NAME> — это значение, задаваемое пользователем.

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице или с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом!