Роль управления
Чтобы Qlik Cloud мог настраивать экземпляры и эластичные IP в среде Lakehouse, необходимо создать роль управления.
Роль управления — это роль IAM, через которую Qlik получает необходимые разрешения на взаимодействие со средой AWS. Эта роль дается Qlik во время развертывания и операций выполнения, и через нее обеспечивается защищенный доступ и управление ресурсами AWS, необходимыми для озер-хранилищ данных на базе Iceberg.
Роль связана с настраиваемой политикой IAM, которая определяет, какие действия разрешены для Qlik — например, чтение из блоков S3 и запись в них, управление экземплярами EC2 и взаимодействие с другими службами, такими как AWS Glue или KMS.
Эта роль обеспечивает защищенный доступ с минимальными привилегиями, позволяя Qlik автоматизировать и организовывать ключевые задачи, такие как управление метаданными, перемещение данных и выполнение заданий, в рамках учетной записи AWS.
Чтобы роль работала правильно, она должна быть создана с необходимыми доверенными отношениями и политикой разрешений, как указано в инструкциях по настройке.
Необходимые условия
Необходимо создать виртуальную частную сеть (VPC) и настроить подсеть и зоны доступности для размещения Открытое озеро данных Qlik. Кроме того, необходимо следующее:
-
Идентификатор учетной записи AWS.
-
Симметричный ключ KMS для ARN
Создание роли управления
Чтобы создать роль управления:
-
В консоли AWS перейдите в раздел IAM
-
В разделе Roles (Роли) нажмите Create role (Создать роль) и настройте роль:
-
Trusted entity type (Тип доверенной сущности): выберите Custom trust policy (Настраиваемая политика доверия).
-
Statement: в панели кода вставьте политику Trusted entity (Доверенная сущность), созданную в Руководстве по конфигурации роли в Qlik Cloud.
-
Создайте роль и запишите значение ARN. Значение должно быть в следующем формате:
arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME>.
Создание политики
-
В разделе IAM нажмите Roles и выберите роль, созданную выше.
-
Нажмите Add permissions (Добавить разрешения).
-
Выберите Create inline policy (Создать внутреннюю политику).
-
В Policy editor (Редактор политики) выберите JSON. Вставьте следующий текст и проверьте, что:
-
В поле <AWS_ACCOUNT_ID> укажите свою учетную запись.
-
В поле <KMS_SYMMETRIC_KEY_ARN> запишите свой ключ 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 — Resource Management Actions (Действия по управлению ресурсами) |
{ "Version": "2012-10-17", "Statement": [ { "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": "*" }, { "Action": "ec2:RunInstances", "Effect": "Allow", "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*::image/*" ] } ] } |
Эта политика предоставляет Qlik разрешение на управление экземплярами EC2 и ресурсами, такими как тома, группы безопасности и подсети. Условия не включены, так как все методы либо описывают, либо создают действия. |
| EC2 — Resource Manipulation Actions (Действия по организации ресурсов) |
{ "Version": "2012-10-17", "Statement": [ { "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:PutScalingPolicy", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeletePolicy", "autoscaling:DeleteTags", "autoscaling:StartInstanceRefresh" ], "Condition": { "Null": { "aws:ResourceTag/qlik_cluster": "false" } }, "Effect": "Allow", "Resource": "*" } ] } |
Эта политика дает Qlik разрешение на управление экземплярами EC2 и ресурсами, созданными Qlik, на основе тега qlik_cluster. Разрешения включают такие действия, как присоединение томов, остановка работы экземпляров и изменение шаблонов запуска. |
| EC2 — Validation Actions (Действия по валидации) |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:DescribeRegions", "ec2:DescribeSubnets", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeKeyPairs" ], "Resource": "*" } ] } |
Эта политика предоставляет Qlik разрешения на проверку входных параметров при создании сетевых интеграций. Эти действия не являются обязательными и требуются только при наличии определенных входных параметров. |
| IAM — Instance Profile Actions (Действия с профилем экземпляра) | "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": "*" } ] } | Эта политика позволяет роли управления работать с профилями экземпляров EC2, включая такие действия, как создание ролей, связанных с сервисами, и передача ролей экземплярам EC2. |
| STS — Authorization Action (Авторизация) | "Version": "2012-10-17", "Statement": [ { "Action": "sts:DecodeAuthorizationMessage", "Effect": "Allow", "Resource": "*" } ] } | Эта политика предоставляет Qlik разрешение на декодирование сообщений авторизации, необходимое для устранения проблем с авторизацией. |
| SSM — Secret Management Actions (Действия по управлению с секретами) | "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:PutParameter" ], "Effect": "Allow", "Resource": "arn:aws:ssm:*:<AWS_ACCOUNT_ID>:parameter/qlik/*", } ] } | Эта политика дает роли управления разрешение на хранение секретов и паролей в хранилище параметров AWS Systems Manager. Эти секреты будут считываться экземплярами, запускаемыми Qlik. <AWS_ACCOUNT_ID> — это значение, вводимое пользователем. |
| KMS | "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:GenerateDataKeyPairWithoutPlaintext", "kms:Encrypt" ], "Resource": "<KMS_SYMMETRIC_KEY_ARN>" } ] } | Эта политика предоставляет Qlik разрешение на генерацию пары ключей шифрования без доступа к закрытому ключу, а также разрешение на шифрование данных, которые будут читаться и расшифровываться машинами, предоставленными Qlik. <KMS_SYMMETRIC_KEY_ARN>— это значение, вводимое пользователем. |