我無法使用 Amazon EC2 Auto Scaling 啟動具有加密 AMI 或加密磁碟區的 EC2 執行個體

2 分的閱讀內容
0

Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 無法使用加密的 Amazon Machine Image (AMI) 或加密磁碟區啟動執行個體。建立 Amazon EC2 Auto Scaling 的 AWS Identity and Access Management (IAM) 身分具有管理員權限。

簡短說明

Amazon EC2 Auto Scaling 使用服務連結角色取得呼叫其他 AWS 服務的必要權限。SLR 的權限為硬式編碼,因此無法變更。傳遞至 Amazon EC2 Auto Scaling SLR 的預設權限不包括用於存取 AWS Key Management Service (AWS KMS) 金鑰的權限。

若要透過 Amazon EC2 Auto Scaling 加密 Amazon Elastic Block Store (Amazon EBS) 磁碟區或 AMI,請使用 AWS 受管金鑰客戶受管金鑰。Amazon EC2 Auto Scaling 不需要其他權限,即可使用 AWS 受管金鑰。但是,Amazon EC2 Auto Scaling SLR 必須具有客戶受管金鑰的其他權限。

解決方案

下列範例使用預設 Amazon EC2 Auto Scaling SLR AWSServiceRoleForAutoScaling,但您可以建立唯一的角色名稱。

您必須從擁有 Amazon EC2 Auto Scaling 群組的帳戶 (而不是 AWS KMS 帳戶) 建立 AWS KMS 授權。如需詳細資訊,請參閱 AWS KMS 中的授權

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確認您使用的是最新的 AWS CLI 版本

Amazon EC2 Auto Scaling 使用位於相同 AWS 帳戶中的客戶受管金鑰

請遵循指示以變更金鑰政策,並新增下列範例陳述式:

**注意:**將 123456789012 取代為已部署 Amazon EC2 Auto Scaling 群組的帳戶 ID。

{    "Sid": "Allow service-linked role use of the KMS",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
},
{
    "Sid": "Allow attachment of persistent resources",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "Action": [
        "kms:CreateGrant"
    ],
    "Resource": "*",
    "Condition": {
        "Bool": {
            "kms:GrantIsForAWSResource": true
        }
    }
}

Amazon EC2 Auto Scaling 使用位於外部 AWS 帳戶中的客戶受管金鑰

  1. 遵循指示以變更金鑰政策。修改金鑰政策,以便位於外部 AWS 帳戶中的 IAM 實體可以執行 CreateGrant API 動作:

    {    "Sid": "Allow external account 111122223333 use of the KMS",
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::111122223333:root"
            ]
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
        ],
        "Resource": "*"
    },
    {
        "Sid": "Allow attachment of persistent resources in external account 111122223333",
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::111122223333:root"
            ]
        },
        "Action": [
            "kms:CreateGrant"
        ],
        "Resource": "*"
    }
  2. 將 AWS CLI 命令 create-grant 與擁有 Amazon EC2 Auto Scaling 群組之 AWS 帳戶中的 IAM 實體憑證搭配使用:
    **注意:**將 444455556666 取代為 KMS 金鑰所在的帳戶 ID。

    $ aws kms create-grant --key-id arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling --operations Decrypt GenerateDataKeyWithoutPlaintext ReEncryptFrom ReEncryptTo CreateGrant

    請確定 IAM 實體有權執行 CreateGrant API 動作。如果遺失 CreateGrant 權限,請將下列陳述式新增至 IAM 實體的連接政策:

    {      "Sid": "AllowCreationOfGrantForTheKMSinExternalAccount444455556666",
          "Effect": "Allow",
          "Action": "kms:CreateGrant",
          "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d"
    }

相關資訊

適用於 Amazon EC2 Auto Scaling 的服務連結角色

與加密磁碟區搭配使用的必要 KMS 金鑰政策

AWS 官方
AWS 官方已更新 8 個月前