Profil för EC2-instans
Definiera en IAM-roll för dina Qlik-hanterade EC2-instanser. Den här rollen används av de instanser som körs i din AWS-sjöhusmiljö.
En EC2-instansprofil är en behållare för en IAM-roll som kan tilldelas en EC2-instans. Det gör att instansen kan komma åt AWS-tjänster på ett säkert sätt utan att behöva lagra AWS-autentiseringsuppgifter på instansen.
När en instans startas med en instansprofil görs den tillhörande IAM-rollens tillfälliga autentiseringsuppgifter automatiskt tillgängliga för program som körs på instansen via instansens metadatatjänst. Detta gör det möjligt för instansen att göra auktoriserade API-förfrågningar till AWS-tjänster som Amazon S3, DynamoDB eller CloudWatch.
Användning av instansprofiler förbättrar säkerheten och förenklar hanteringen av referenser genom att:
-
Eliminerar hårdkodade autentiseringsuppgifter i programkod eller konfigurationsfiler.
-
Automatiskt roterande referenser.
-
Tillämpning av lägsta privilegium genom detaljerade IAM-policyer som är kopplade till rollen.
Instansprofiler används ofta i scenarier där EC2-instanser behöver interagera med andra AWS-resurser på ett säkert och programbaserat sätt.
Förutsättningar
Se till att du har skapat VPC och delnätverk och tillgänglighetszoner för att vara värd för ditt Qlik Open Lakehouse, och har följande uppgifter:
-
URL:en till S3 bucket för Qlik för att lagra interna metadatafiler.
-
Namnet på Kinesis-strömmen för Qlik för att hantera instansen i klustret.
Skapa en instansprofil
Gör följande för att skapa en Management-roll:
-
Gå till IAM i AWS-konsolen
-
Under Roller klickar du på Skapa roll och konfigurerar den:
-
Typ av betrodd enhet: Välj AWS-tjänst bland alternativen.
-
Tjänst eller användningsfall: Välj EC2.
-
Användningsfall: Välj EC2.
-
Skapa rollen. Gå tillbaka till sidan Roller och klicka på den roll som du skapade.
-
Klicka på ikonen Kopiera bredvid Instansprofilens ARN och spara det värdet.
-
Klicka på Lägg till behörigheter och välj Skapa inlinepolicy.
-
Policyredigerare: Välj JSON. Klistra in följande text och se till att:
-
Ändra parametern <INTERNAL_STREAM_NAME> till din Kinesis-ström.
-
Ändra parametern <INTERNAL_BUCKET_NAME> till din S3-bucket.
-
{
"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"
}
}
}
]
}
Motiveringar för krav på behörighet
Följande tabell förklarar varje behörighet som ges till EC2-instansen:
| Policy | Behörigheter | Förklaring |
|---|---|---|
| Bifoga volympolicy |
{ "Version": "2012-10-17", "Effect": "Allow", "Resource": [ "*" ], "Action": [ "ec2:AttachVolume", "ec2:DetachVolume", "autoscaling:SetInstanceHealth" ], "Condition": { "Null": { "aws:ResourceTag/qlik_cluster": "false" } } } ] } |
Denna policy ger EC2-instanser behörighet att bifoga permanenta EBS-volymer som skapats av Qlik. Detta gör att data kan sparas mellan uppgraderingar av Gateway-maskiner. |
| CloudWatch |
{ "Version": "2012-10-17", "Effect": "Allow", "Resource": [ "*" ], "Action": [ "cloudwatch:PutMetricData" } ] } |
Den här policyn gör det möjligt för EC2-instanser att skicka anpassade mätvärden till CloudWatch, som används för att automatiskt skala Qlik-kluster baserat på programvarans prestanda. |
| Intern ström |
{ "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" ] } ] } |
Den här policyn ger EC2-instanser behörighet att interagera med de Kinesis-strömmar som används av klustersynkroniseringstjänster, t.ex. nyckelvärdeslagret och distribuerade lås. <INTERNAL_STREAM_NAME> är ett användarkonfigurerat värde. |
| Intern 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" ] } ] } |
Policyn ger EC2-instanser behörighet att lagra, läsa och radera interna data. De interna uppgifterna innehåller verkliga användardata som hålls i mellanlagring för bearbetning. <INTERNAL_BUCKET_NAME> är ett användarkonfigurerat värde. |