EC2-exemplaarprofiel
Definieer een IAM-rol voor uw Qlik-beheerde EC2-exemplaren. Deze rol wordt gebruikt door de exemplaren die in uw AWS lakehouse-omgeving worden uitgevoerd.
Een EC2-exemplaarprofiel is een container voor een IAM-rol die kan worden toegewezen aan een EC2-exemplaar. Hiermee kan het exemplaar veilig toegang krijgen tot AWS-services zonder dat er AWS-referenties op het exemplaar opgeslagen te hoeven worden.
Wanneer een exemplaar met een exemplaarprofiel wordt gestart, worden de tijdelijke referenties van de bijbehorende IAM-rol automatisch beschikbaar gemaakt voor applicaties die op het exemplaar draaien via de metagegevensservice. Hierdoor kan het exemplaar geautoriseerde API-aanvragen verzenden naar AWS-services zoals Amazon S3, DynamoDB of CloudWatch.
Het gebruik van exemplaarprofielen verbetert de beveiliging en vereenvoudigt het referentiebeheer door:
-
Het elimineren van in code vastgelegde referenties in applicatiecode of configuratiebestanden.
-
Automatisch roterende referenties.
-
Het afdwingen van minimale bevoegdheden via fijnmazige IAM-beleidsregels die aan de rol zijn gekoppeld.
Exemplaarprofielen worden vaak gebruikt in scenario's waar EC2-exemplaren veilig en programmatisch moeten samenwerken met andere AWS-resources.
Vereisten
Zorg ervoor dat u de VPC, het subnet en de Availability Zones voor het hosten van uw Qlik Open Lakehouse hebt gemaakt en dat u de volgende gegevens hebt:
-
De URL van de S3-bucket voor Qlik om interne metagegevensbestanden op te slaan.
-
De naam van de Kinesis-stream voor Qlik om het exemplaar in het cluster te beheren.
Een exemplaarprofiel aanmaken
Om een beheerrol te maken, doet u het volgende:
-
Ga in de AWS-console naar IAM
-
Klik in Rollen op Rol maken en configureer deze:
-
Vertrouwd entiteitstype: selecteer AWS-service uit de opties.
-
Service of gebruiksscenario: selecteer EC2.
-
Gebruiksscenario: selecteer EC2.
-
Maak de rol. Ga terug naar de pagina Rollen en klik op de rol die u hebt gemaakt.
-
Klik op het pictogram Kopiëren naast de ARN-naam van het exemplaarprofiel en sla deze waarde op.
-
Klik op Machtigingen toevoegen en selecteer Inline beleid maken.
-
Beleidseditor: selecteer JSON. Plak de volgende tekst en doe het volgende:
-
Verander de parameter <INTERNAL_STREAM_NAME> in uw Kinesis-stream.
-
Verander de parameter <INTERNAL_BUCKET_NAME> in uw 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"
}
}
}
]
}
Redenen van vereiste machtiging
De volgende tabel geeft uitleg over elke machtiging die aan het EC2-exemplaar is toegekend:
| Beleid | Machtigingen | Uitleg |
|---|---|---|
| Volumebeleid bijvoegen |
{ "Version": "2012-10-17", "Effect": "Allow", "Resource": [ "*" ], "Action": [ "ec2:AttachVolume", "ec2:DetachVolume", "autoscaling:SetInstanceHealth" ], "Condition": { "Null": { "aws:ResourceTag/qlik_cluster": "false" } } } ] } |
Dit beleid geeft EC2-exemplaren machtigingen om Persistent EBS-volumes bij te voegen die zijn aangemaakt door Qlik. Hierdoor blijven gegevens behouden tussen upgrades van Gateway-machines. |
| CloudWatch |
{ "Version": "2012-10-17", "Effect": "Allow", "Resource": [ "*" ], "Action": [ "cloudwatch:PutMetricData" } ] } |
Met dit beleid kunnen EC2-exemplaren aangepaste statistieken naar CloudWatch sturen, die worden gebruikt om Qlik-clusters automatisch te schalen op basis van softwareprestaties. |
| Interne 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" ] } ] } |
Dit beleid machtigt EC2-exemplaren om te communiceren met de Kinesis-streams die worden gebruikt door clustersynchronisatiediensten, zoals de Key-Value Store en Distributed Locks. <INTERNAL_STREAM_NAME> is een door de gebruiker geconfigureerde waarde. |
| Interne 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" ] } ] } |
Het beleid geeft EC2-exemplaren machtigingen om interne gegevens op te slaan, te lezen en verwijderen. De interne gegevens bevatten echte gebruikersgegevens die in tussentijdse opslag worden bewaard voor verwerking. <INTERNAL_BUCKET_NAME> is een door de gebruiker geconfigureerde waarde. |