管理ロール
管理ロールを作成し、Qlik Cloud がレイクハウス環境内でインスタンスとエラスティック IP を構成できるようにします。
管理ロールは、お客様に代わって AWS 環境とやり取りするために必要な権限を Qlik に付与するために作成する IAM ロールです。このロールは、展開と実行時の操作で Qlik によって引き受けられ、Iceberg のレイクハウスに必要な AWS リソースに安全にアクセスして管理します。
このロールはカスタムの IAM ポリシーと関連付けられ、Qlik は、S3 バケットからの読み書き、EC2 インスタンスの管理、AWS Glue や KMS のような他のサービスとのやり取りなど、実行が許可される特定のアクションを定義します。
このロールは、Qlik が、AWS アカウント内のメタデータ管理、データ移動、ジョブ実行などの主要なタスクを自動化およびオーケストレーションできるようにしながら、安全で最小限の特権アクセスを保証します。
ロールを正しく機能させるには、セットアップ手順で説明されているように、必要な信頼関係と権限ポリシーでロールを作成する必要があります。
前提条件
Qlik Open Lakehouse をホスティングするための VPC、サブネット、可用性ゾーンを作成し、以下の詳細があることを確認してください。
-
AWSアカウントID
-
対称 KMS キー ARN
管理ロールの作成
管理ロールを作成するには、以下を行います。
-
AWS コンソールで、[IAM] に移動します。
-
[ロール] で [ロールの作成] をクリックし、ロールを設定します。
-
[信頼されるエンティティ タイプ]: [カスタム信頼ポリシー] を選択します。
-
ステートメント: コード ペインで、管理ロールの構成ガイドで作成した信頼済みエンティティポリシーを Qlik Cloud に貼り付けます。
-
ロールを作成し、ARN 値をメモしてください。これは以下のような書式になります。
arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME>.
ポリシーを作成
-
[IAM] で [ロール] をクリックし、上記で作成したロールを選択します。
-
[権限を追加] をクリックします。
-
[インライン ポリシーを作成] を選択します。
-
[ポリシー エディタ]で、[JSON] を選択します。次のテキストを貼り付け、次のことを確認します。
-
<AWS_ACCOUNT_ID> パラメータを自分のアカウントに変更します。
-
<KMS_SYMMETRIC_KEY_ARN> の値をキー 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"
]
}
]
}
要件許可の正当性
次の表は、管理ロールの各権限について説明したものです。
| ポリシー | 権限 | 説明 |
|---|---|---|
| EC2 - リソース管理アクション |
{ "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/*" ] } ] } |
このポリシーは、ボリューム、セキュリティ グループ、サブネットなどの EC2 インスタンスとリソースを管理する権限を Qlik に付与します。すべてのメソッドは説明または作成アクションであるため、条件は含まれていません。 |
| EC2 - リソース操作アクション |
{ "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": "*" } ] } |
このポリシーは、Qlik によって qlik_clusterというタグに基づいて作成された EC2 インスタンスとリソースを管理する権限を Qlik に付与します。権限には、ボリュームのアタッチ、インスタンスの終了、起動テンプレートの変更などの操作が含まれます。 |
| EC2 - 検証アクション |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:DescribeRegions", "ec2:DescribeSubnets", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeKeyPairs" ], "Resource": "*" } ] } |
このポリシーは、ネットワーク統合を作成するときに入力を検証するための権限を Qlik に付与します。アクションは必須ではなく、特定の入力が提供された場合にのみ必要となります。 |
| IAM - インスタンス プロファイル アクション | "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": "*" } ] } | このポリシーにより、管理ロールが EC2 インスタンス プロファイルを処理できるようになり、サービス リンクされたロールの作成、EC2 インスタンスへのロールの受け渡しなどのアクションが可能になります。 |
| STS - 認証アクション | "Version": "2012-10-17", "Statement": [ { "Action": "sts:DecodeAuthorizationMessage", "Effect": "Allow", "Resource": "*" } ] } | このポリシーは、認証の問題のトラブルシューティングを支援するために、認証メッセージをデコードする権限を Qlik に与えます。 |
| SSM - 秘密管理アクション | "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:PutParameter" ], "Effect": "Allow", "Resource": "arn:aws:ssm:*:<AWS_ACCOUNT_ID>:parameter/qlik/*", } ] } | このポリシーは、AWS Systems Manager パラメータ ストアに秘密を保存する権限を管理ロールに付与します。これらの秘密は、Qlik.<AWS_ACCOUNT_ID> によってプロビジョニングされたインスタンスによって読み取られます。 |
| KMS | "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:GenerateDataKeyPairWithoutPlaintext", "kms:Encrypt" ], "Resource": "<KMS_SYMMETRIC_KEY_ARN>" } ] } | このポリシーは、秘密キーにアクセスすることなく暗号化キーペアを生成し、Qlik によってプロビジョニングされたマシンによって読み取られ、復号化されるデータを暗号化する権限を Qlik に与えます。<KMS_SYMMETRIC_KEY_ARN> はユーザーが設定した値です。 |