ディスク、スナップショット、イメージの暗号化や、暗号化されたリソースのアカウント間での共有には、Elastic Compute Service (ECS) に Key Management Service (KMS) キーへのアクセス権を付与する必要があります。
ECS リソースの暗号化
ECS は、ディスク、スナップショット、イメージに対して KMS のエンベロープ暗号化を使用します。利用可能なキータイプは 2 種類あります。
| キータイプ | 管理者 | 必要な権限設定 |
|---|---|---|
| サービスキー | Alibaba Cloud (無料) | なし — ECS が自動的に使用します |
| カスタマーマスターキー (CMK) | お客様 | はい — RAM ロールを介して ECS にアクセス権を付与する必要があります |
サービスキーの使用
Alibaba Cloud は、サービスキーを無料で作成、管理します。ECS は権限設定なしでこれらを直接使用します。
CMK の使用
CMK を使用するには、ECS に CMK へのアクセス権限を付与する必要があります。承認フローは次のとおりです。
-
Alibaba Cloud は、お客様のアカウントに、KMS リソースにアクセスする権限を持つ
AliyunECSDiskEncryptDefaultRoleという名前のシステム Resource Access Management (RAM) ロールを作成します。 -
ECS はこの RAM ロールを引き受け、KMS 内のお客様の CMK にアクセスします。
承認の確認:
-
ECS リソースを暗号化するために初めて CMK を選択すると (たとえば、暗号化ディスクを作成する場合)、「[If you want to select more keys, grant permissions to the RAM role]」というメッセージが表示されます。

-
[承認ポリシーの確認] をクリックします。システムが
AliyunECSDiskEncryptDefaultRoleを作成し、必要な権限を付与します。
確認後、コンソールで ECS リソースを設定する際に、KMS から任意の CMK を選択できるようになります。
暗号化されたリソースのアカウント間での共有
暗号化されたイメージまたはスナップショットを別のアカウントまたはリソースディレクトリと共有するには、共有先に、共有元の KMS キーへのアクセス権を付与する必要があります。これらの手順は、共有元のアカウントで実行してください。
前提条件
以下を確認してください。
-
共有元のアカウントに暗号化されたイメージまたはスナップショットがあること
-
共有元のアカウントで RAM ロールを作成および管理する権限があること
ステップ 1:RAM ロールの作成
共有元のアカウントで、共有先のアカウントを信頼されたエンティティとして RAM ロールを作成します。詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールの作成」をご参照ください。
リソースタイプに一致するロール名を使用してください。
| リソースタイプ | RAM ロール名 |
|---|---|
| 暗号化されたスナップショット | AliyunECSShareEncryptSnapshotDefaultRole |
| 暗号化されたイメージ | AliyunECSShareEncryptImageDefaultRole |
ステップ 2:信頼ポリシーの変更
RAM ロールの [信頼ポリシー] タブでポリシーを更新し、共有先を指定します。詳細については、「RAM ロールの信頼ポリシーの変更」をご参照ください。
共有シナリオに応じてポリシーを選択してください。
シナリオ 1:他の Alibaba Cloud アカウントとの共有
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"<UID1>@ecs.aliyuncs.com",
"<UID2>@ecs.aliyuncs.com"
]
}
}
],
"Version": "1"
}
<UID1> と <UID2> を共有先のアカウント ID に置き換えます。アカウントごとに 1 つのエントリを追加します。
シナリオ 2:リソースディレクトリとの共有
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "*@ecs.aliyuncs.com"
},
"Condition": {
"StringEquals": {
"sts:ServiceOwnerRDId": "<ID of the resource directory>"
}
}
}
],
"Version": "1"
}
<ID of the resource directory> をリソースディレクトリの ID に置き換えます。詳細については、「リソースディレクトリの基本情報の表示」をご参照ください。
シナリオ 3:リソースディレクトリ内の特定のフォルダーとの共有
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "*@ecs.aliyuncs.com"
},
"Condition": {
"StringLike": {
"sts:ServiceOwnerRDPath": "<ID of the resource directory>/<Root folder ID>/.../<Current folder ID*>"
}
}
}
],
"Version": "1"
}
<ID of the resource directory>、<Root folder ID>、<Current folder ID> を実際の値に置き換えます。詳細については、「フォルダーの基本情報の表示」をご参照ください。
ステップ 3:RAM ロールへのポリシーのアタッチ
ポリシーは暗号化キーのタイプによって異なります。
-
サービスキー:
AliyunKMSFullAccessシステムポリシーをアタッチします。詳細については、「AliyunKMSFullAccess」をご参照ください。 -
CMK: カスタムポリシーを作成してアタッチします。詳細については、「RAM ロールの権限の管理」をご参照ください。
カスタムポリシーテンプレート:
{
"Version": "1",
"Statement": [
{
"Action": "kms:List*",
"Resource": "acs:kms:<region-id>:<account-id>:key",
"Effect": "Allow"
},
{
"Action": [
"kms:DescribeKey",
"kms:TagResource",
"kms:UntagResource",
"kms:Encrypt",
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "acs:kms:<region-id>:<account-id>:key/<cmk-id>",
"Effect": "Allow"
}
]
}
プレースホルダーを置き換えます。
| プレースホルダー | 説明 |
|---|---|
<region-id> |
CMK が存在するリージョン |
<account-id> |
CMK を所有している Alibaba Cloud アカウント |
<cmk-id> |
ECS リソースの暗号化に使用する CMK |
ステップ 4:リソースの共有
暗号化されたリソースを共有先に共有します。