暗号化されたルートボ​​リュームを使用して ec2 インスタンスを自動スケールするにはどうすればよいですか?

暗号化されたルートボ​​リュームを使用して ec2 インスタンスを自動スケールするにはどうすればよいですか?

AWSで自動スケーリング設定を構成しようとしています。ノード起動テンプレートにはルートボリューム(EBS)の暗号化が含まれています。サービスにリンクされたロールと、Amazon KMSのCMKをIAMポリシーに従って構成しました。ドキュメンテーション

ただし、ASG がインスタンスを作成しようとすると、次のエラーが発生します。

Launching a new EC2 instance: i-0123456789xxx. Status Reason: Instance became unhealthy while waiting for instance to be in InService state. Termination Reason: Client.InternalError: Client error on launch

トラブルシューティングドキュメント単に元のドキュメントを指して、IAM ポリシーが適切に構成されていないことを示唆していますが、何が正しくないのかを突き止めるのに苦労しています。

サービスリンクロールは ASG 上で構成されます。ASG の SLRSLR には、ボリュームの暗号化に使用されたキーに対する IAM ポリシー内の正しい権限があります。

{
        "Sid": "Allow use of the key",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789: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::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms: CreateGrant",
            "kms: ListGrants",
            "kms: RevokeGrant"
        ],
        "Resource": "*",
        "Condition": {
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }

同じ AMI を手動で起動し、ルート ボリュームが同じキーで暗号化されていることを指定すると、機能することに注意してください。これはおそらく SLR に問題があることを示唆しています。

または、ルートボリュームがすでに暗号化されている AMI を作成する必要がありますか?

2020年11月5日更新:

フォーマット エラーが発生していたことが判明しました。アクション セクションの各コロンの後にスペースがあります。これを削除すると、問題は修正され、期待どおりに動作するようになりました。

{
        "Sid": "Allow use of the key",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789: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::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms:CreateGrant",
            "kms:ListGrants",
            "kms:RevokeGrant"
        ],
        "Resource": "*",
        "Condition": {
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }

答え1

フォーマット エラーが発生していたことが判明しました。アクション セクションの各コロンの後にスペースがあります。これを削除すると、問題は修正され、期待どおりに動作するようになりました。

{
        "Sid": "Allow use of the key",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789: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::0123456789:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        },
        "Action": [
            "kms:CreateGrant",
            "kms:ListGrants",
            "kms:RevokeGrant"
        ],
        "Resource": "*",
        "Condition": {
            "Bool": {
                "kms:GrantIsForAWSResource": "true"
            }
        }
    }

答え2

私も同じ問題を抱えていましたが、オートスケーリングのサービスリンクロールを主要政策関連するキーのAWS コンソール -> KMS -> カスタマー管理キー -> YOUR_KEY -> キーポリシータブの「編集」) 次のように:

{
    "Version": "2012-10-17",
    "Id": "key-default-1",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::READCTED:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling",
                    "arn:aws:iam::REDACTED:root"
                ]
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}

関連情報