EC2 執行個體設定檔
為 Qlik 管理的 EC2 執行個體定義 IAM 角色。此角色由您的 AWS 湖存放庫環境中執行的執行個體使用。
EC2 執行個體設定檔是可指派給 EC2 執行個體的 IAM 角色的容器。這允許執行個體安全地存取 AWS 服務,而無需在執行個體上儲存 AWS 認證。
若使用執行個體設定檔來啟動執行個體,相關 IAM 角色的臨時認證將透過執行個體中繼資料服務自動提供給執行個體上執行的應用程式。這讓執行個體能夠向 AWS 服務 (例如 Amazon S3、DynamoDB 或 CloudWatch) 發出授權 API 請求。
使用執行個體設定檔可以透過以下方式提高安全性並簡化認證管理:
-
消除應用程式程式碼或設定檔中的硬編碼認證。
-
自動輪換認證。
-
透過附加到角色的精細 IAM 政策來強制執行最低權限。
執行個體設定檔通常用於 EC2 執行個體需要以安全且程式化的方式與其他 AWS 資源互動的情境。
必要條件
確保您已建立用於託管 Qlik 開放湖倉庫 的 VPC、子網路和可用區域,並具有以下詳細資訊:
-
用來讓 Qlik 儲存內部中繼資料檔案的 S3 值區 URL。
-
用於管理叢集中執行個體的 Qlik 的 Kinesis 串流名稱。
建立執行個體設定檔
若要建立管理角色,請執行以下操作:
-
在 AWS 主控台中,前往 IAM
-
在角色中,按一下建立角色,並進行設定:
-
信任的實體類型:從選項中選擇 AWS 服務 。
-
服務或使用案例:選取 EC2。
-
使用案例:選取 EC2。
-
建立角色。返回角色頁面並按一下您建立的角色。
-
按一下執行個體設定檔 ARN 名稱旁邊的複製圖示並儲存此值。
-
按一下新增權限並選取建立內嵌政策。
-
政策編輯器:選取 JSON。貼上下列文字,並且務必:
-
將 <INTERNAL_STREAM_NAME> 參數變更為您的 Kinesis 串流。
-
將 <INTERNAL_BUCKET_NAME> 參數變更為您的 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"
}
}
}
]
}
要求權限理由
下表解釋了授予 EC2 執行個體的每個權限:
| 政策 | 權限 | 解釋 |
|---|---|---|
| 附加磁碟區政策 |
{ "Version": "2012-10-17", "Effect": "Allow", "Resource": [ "*" ], "Action": [ "ec2:AttachVolume", "ec2:DetachVolume", "autoscaling:SetInstanceHealth" ], "Condition": { "Null": { "aws:ResourceTag/qlik_cluster": "false" } } } ] } |
此政策向 EC2 執行個體授予權限,以附加由 Qlik 建立的常設 EBS 磁碟區。這讓資料能夠在閘道機器升級之間持續保留。 |
| CloudWatch |
{ "Version": "2012-10-17", "Effect": "Allow", "Resource": [ "*" ], "Action": [ "cloudwatch:PutMetricData" } ] } |
此政策允許 EC2 執行個體將自訂指標推送到 CloudWatch,這用於根據軟體效能自動擴展 Qlik 叢集。 |
| 內部串流 |
{ "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" ] } ] } |
此政策向 EC2 執行個體授予權限,以便與叢集同步服務 (例如索引鍵值儲存和分散式鎖定) 所使用的 Kinesis 串流互動。<INTERNAL_STREAM_NAME> 是使用者設定的值。 |
| 內部值區 |
{ "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" ] } ] } |
此政策允許 EC2 執行個體儲存、讀取和刪除內部資料的權限。內部資料包含保留在中間儲存空間中以供處理的真實使用者資料。 <INTERNAL_BUCKET_NAME> 是使用者設定的值。 |