Ruolo di gestione
È possibile creare un ruolo di gestione per consentire a Qlik Cloud di configurare le istanze e gli IP elastici nel proprio ambiente.
Un ruolo di gestione è un ruolo IAM creato dall'utente per concedere a Qlik le autorizzazioni necessarie per interagire con l'ambiente AWS per suo conto. Questo ruolo viene assunto da Qlik durante le operazioni di distribuzione e di esecuzione per accedere e gestire in modo sicuro le risorse AWS necessarie per il lakehouse Iceberg.
Il ruolo è associato a un criterio IAM personalizzato che definisce le azioni specifiche che Qlik è autorizzato a eseguire, come leggere e scrivere su bucket S3, gestire istanze EC2 e interagire con altri servizi come AWS Glue o KMS.
Questo ruolo garantisce un accesso sicuro con privilegi minimi, consentendo a Qlik di automatizzare e orchestrare attività chiave come la gestione dei metadati, lo spostamento dei dati e l'esecuzione di processi all'interno dell'account AWS.
Per funzionare correttamente, il ruolo deve essere creato con la relazione di attendibilità e i criteri di autorizzazione richiesti, come indicato nelle istruzioni di configurazione.
Prerequisiti
Assicurarsi di aver creato il VPC, la sottorete e le zone di disponibilità per l'hosting del Qlik Open Lakehouse e di disporre dei seguenti dettagli:
-
L'ID dell'account AWS dell'utente.
-
L'ARN della chiave KMS simmetrica.
Creazione di un ruolo di gestione
Per creare un ruolo di gestione, fare quanto segue:
-
Nella Console AWS, andare a IAM.
-
In Ruoli, fare clic su Crea ruolo e configurarlo:
-
Tipo di entità attendibile, selezionare il Criterio di attendibilità personalizzato.
-
Istruzione: nel riquadro del codice, incollare il criterio dell'Entità attendibile creato nella Guida alla configurazione del ruolo di gestione in Qlik Cloud.
-
Creare il ruolo e prendere nota del valore ARN. La formattazione deve essere la seguente:
arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME>.
Creazione di un criterio
-
Fare clic su IAM, fare clic su Ruoli, quindi selezionare il ruolo creato in precedenza.
-
Fare clic su Aggiungi autorizzazioni.
-
Selezionare Crea un criterio inline.
-
In Editor criteri, selezionare JSON. Incollare il seguente testo, quindi assicurarsi di fare quanto segue:
-
Impostare il parametro <AWS_ACCOUNT_ID> sul proprio account.
-
Aggiornare il valore <KMS_SYMMETRIC_KEY_ARN> con la chiave 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"
]
}
]
}
Giustificazioni delle autorizzazioni richieste
La tabella che segue spiega ogni autorizzazione per il ruolo di gestione:
| Criterio | Autorizzazioni | Spiegazione |
|---|---|---|
| EC2 - Azioni di gestione delle risorse |
{ "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/*" ] } ] } |
Questo criterio concede a Qlik l'autorizzazione di gestire le istanze e le risorse EC2, come volumi, gruppi di sicurezza e sottoreti. Non sono incluse le condizioni, poiché tutti i metodi sono azioni di descrizione o di creazione. |
| EC2 - Azioni di manipolazione delle risorse |
{ "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": "*" } ] } |
Questo criterio concede a Qlik l'autorizzazione di gestire le istanze e le risorse EC2 create da Qlik, in base al tag, qlik_cluster. Le autorizzazioni includono azioni come il collegamento di volumi, l'arresto delle istanze e la modifica dei modelli per il lancio. |
| EC2 - Azioni di convalida |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:DescribeRegions", "ec2:DescribeSubnets", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeKeyPairs" ], "Resource": "*" } ] } |
Questo criterio concede a Qlik le autorizzazioni per convalidare gli input durante la creazione delle integrazioni di rete. Le azioni non sono obbligatorie e sono richieste solo quando vengono forniti input specifici. |
| IAM - Azioni per il profilo dell'istanza | "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": "*" } ] } | Questo criterio consente al ruolo di gestione di gestire i profili delle istanze EC2, comprese le azioni come la creazione di ruoli collegati ai servizi e il passaggio dei ruoli alle istanze EC2. |
| STS - Azione di autorizzazione | "Version": "2012-10-17", "Statement": [ { "Action": "sts:DecodeAuthorizationMessage", "Effect": "Allow", "Resource": "*" } ] } | Questo criterio concede a Qlik l'autorizzazione di decodificare i messaggi di autorizzazione per aiutare a risolvere i problemi di autorizzazione. |
| SSM - Azioni per la gestione segreta | "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:PutParameter" ], "Effect": "Allow", "Resource": "arn:aws:ssm:*:<AWS_ACCOUNT_ID>:parameter/qlik/*", } ] } | Questo criterio concede al ruolo di gestione l'autorizzazione a memorizzare i segreti in AWS Systems Manager Parameter Store. Questi segreti saranno letti dalle istanze fornite da Qlik. <AWS_ACCOUNT_ID> è un valore configurato dall'utente. |
| KMS | "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:GenerateDataKeyPairWithoutPlaintext", "kms:Encrypt" ], "Resource": "<KMS_SYMMETRIC_KEY_ARN>" } ] } | Questo criterio concede a Qlik l'autorizzazione a generare coppie di chiavi di crittografia senza accesso alla chiave privata e a crittografare i dati che saranno letti e decifrati da macchine fornite da Qlik. <KMS_SYMMETRIC_KEY_ARN> è un valore configurato dall'utente. |