Profil instancji EC2
Zdefiniuj rolę IAM dla instancji EC2 zarządzanych przez Qlik. Ta rola jest używana przez instancje działające w środowisku AWS lakehouse.
Profil instancji EC2 to kontener roli IAM, który można przypisać do instancji EC2. Pozwala to instancji na bezpieczny dostęp do usług AWS bez konieczności przechowywania poświadczeń AWS na instancji.
Gdy instancja jest uruchamiana z profilem instancji, powiązane tymczasowe poświadczenia roli IAM są automatycznie udostępniane aplikacjom działającym na instancji za pośrednictwem usługi metadanych instancji. Umożliwia to instancji wykonywanie autoryzowanych żądań API do usług AWS, takich jak Amazon S3, DynamoDB lub CloudWatch.
Korzystanie z profili instancji poprawia bezpieczeństwo i upraszcza zarządzanie poświadczeniami poprzez:
-
Eliminację zakodowanych na stałe danych uwierzytelniających w kodzie aplikacji lub plikach konfiguracyjnych.
-
Automatyczną rotację poświadczeń.
-
Egzekwowanie najmniejszych uprawnień poprzez szczegółowe zasady IAM powiązane z rolą.
Profile instancji są powszechnie stosowane w scenariuszach, w których instancje EC2 muszą bezpiecznie i programowo współdziałać z innymi zasobami AWS.
Wymagania wstępne
Upewnij się, że utworzono VPC i podsieć oraz Strefy dostępności do hostowania Qlik Open Lakehouse, i przygotuj następujące dane:
-
Adres URL zasobnika S3 dla Qlik do przechowywania wewnętrznych plików metadanych.
-
Nazwa strumienia Kinesis dla Qlik do zarządzania instancją w klastrze.
Tworzenie profilu instancji
Aby utworzyć rolę zarządzającą, należy wykonać następujące czynności:
-
W konsoli AWS przejdź do IAM
-
W sekcji Role kliknij przycisk Utwórz rolę i skonfiguruj ją:
-
Typ zaufanego podmiotu: wybierz usługę AWS spośród dostępnych opcji.
-
Usługa lub zastosowanie: wybierz EC2.
-
Zastosowanie: wybierz EC2.
-
Utwórz rolę. Wróć do strony Role i kliknij utworzoną rolę.
-
Kliknij ikonę Kopiuj obok nazwy ARN profilu wystąpienia i zapisz tę wartość.
-
Kliknij Dodaj uprawnienia i wybierz opcję Utwórz wbudowaną zasadę.
-
Edytor zasad: wybierz JSON. Wklej poniższy tekst i dodatkowo:
-
Zmień parametr <INTERNAL_STREAM_NAME> na swój Strumień Kinesis.
-
Zmień parametr <INTERNAL_BUCKET_NAME> na swój Zasobnik 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"
}
}
}
]
}
Uzasadnienie wymagania uprawnień
Poniższa tabela objaśnia każde uprawnienie przyznane instancji EC2:
| Zasada | Uprawnienia | Objaśnienie |
|---|---|---|
| Dołącz zasadę dotyczącą woluminów |
{ "Version": "2012-10-17", "Effect": "Allow", "Resource": [ "*" ], "Action": [ "ec2:AttachVolume", "ec2:DetachVolume", "autoscaling:SetInstanceHealth" ], "Condition": { "Null": { "aws:ResourceTag/qlik_cluster": "false" } } } ] } |
Ta zasada przyznaje instancjom EC2 uprawnienia do dołączania trwałych wolumenów EBS utworzonych przez Qlik. Pozwala to na zachowanie danych pomiędzy aktualizacjami urządzenia Gateway. |
| CloudWatch |
{ "Version": "2012-10-17", "Effect": "Allow", "Resource": [ "*" ], "Action": [ "cloudwatch:PutMetricData" } ] } |
Zasada ta umożliwia instancjom EC2 przesyłanie niestandardowych metryk do CloudWatch, które są używane do automatycznego skalowania klastrów Qlik na podstawie wydajności oprogramowania. |
| Strumień wewnętrzny |
{ "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" ] } ] } |
Ta a polityka przyznaje instancjom EC2 uprawnienia do interakcji ze strumieniami Kinesis używanymi przez usługi synchronizacji klastrów, takie jak Key-Value Store i Distributed Locks. <INTERNAL_STREAM_NAME> jest wartością konfigurowaną przez użytkownika. |
| Zasobnik wewnętrzny |
{ "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" ] } ] } |
Ta zasada zezwala instancjom EC2 na przechowywanie, odczytywanie i usuwanie danych wewnętrznych. Dane wewnętrzne zawierają rzeczywiste dane użytkownika, które są przechowywane w pamięci pośredniej do przetwarzania. <INTERNAL_BUCKET_NAME> jest wartością skonfigurowaną przez użytkownika. |