
Estou tentando configurar uma configuração de escalonamento automático na AWS, onde o modelo de inicialização do nó inclui a criptografia do volume raiz (EBS). Configurei uma função vinculada ao serviço e uma CMK no Amazon KMS com uma política do IAM de acordo com odocumentação.
No entanto, estou recebendo o seguinte erro quando o ASG procura criar as instâncias:
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
Odocumentação de solução de problemassimplesmente aponta para a documentação original e sugere que a política do IAM não está configurada corretamente - estou lutando para descobrir o que não está certo.
A função vinculada ao serviço está configurada no ASG:SLR em ASG, e o SLR tem as permissões corretas na política do IAM para a chave usada para criptografar o volume:
{
"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"
}
}
}
Observe que iniciar a mesma AMI manualmente, especificando que o volume raiz é criptografado com a mesma chave, funciona. Isso sugere um problema com a SLR, talvez?
Ou preciso criar uma AMI onde o volume raiz já esteja criptografado?
ATUALIZAÇÃO 05/11/2020:
Acontece que houve um erro de formatação - há um espaço após cada dois pontos na seção Ações. A remoção disso corrigiu o problema e funciona como esperado agora.
{
"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"
}
}
}
Responder1
Acontece que houve um erro de formatação - há um espaço após cada dois pontos na seção Ações. A remoção disso corrigiu o problema e funciona como esperado agora.
{
"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"
}
}
}
Responder2
Eu tive o mesmo problema e resolviadicionando a função vinculada ao serviço para Auto Scaling aoPolítica principalda chave pertinente(Console AWS -> KMS -> Chaves gerenciadas pelo cliente -> YOUR_KEY -> 'editar' na guia Política de chaves) do seguinte modo:
{
"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": "*"
}
]
}