암호화된 루트 볼륨으로 ec2 인스턴스를 자동 확장하는 방법은 무엇입니까?

암호화된 루트 볼륨으로 ec2 인스턴스를 자동 확장하는 방법은 무엇입니까?

노드 시작 템플릿에 루트 볼륨(EBS) 암호화가 포함되어 있는 AWS에서 자동 크기 조정 설정을 구성하려고 합니다. 다음과 같이 IAM 정책을 사용하여 Amazon KMS에 서비스 연결 역할과 CMK를 구성했습니다.선적 서류 비치.

그러나 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의 SLR, SLR은 볼륨을 암호화하는 데 사용된 키에 대한 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

나는 같은 문제가 있었고 그것을 해결했습니다.Auto Scaling을 위한 서비스 연결 역할을주요정책해당 키의(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": "*"
        }
    ]
}

관련 정보