Как настроить состояние terraform для зашифрованного ведра s3
Я настроил серверную часть s3 для состояния терраформирования, следуя этому превосходному ответу Остина Дэвиса. Я последовал предложению Мэтта Лавина добавить политику шифрования корзины.
К сожалению, эта политика ведра означает, что
Не удалось загрузить состояние: AccessDenied: Доступ запрещен, код состояния: 403, идентификатор запроса: XXXXXXXXXXXXXXXX, идентификатор хоста: XXXX...
Я подозреваю, что мне не хватает передачи или настройки чего-то на стороне terraform для шифрования связи или дополнительной записи политики, чтобы иметь возможность читать зашифрованное состояние.
Это политика, добавленная в корзину tf-state:
{
"Version": "2012-10-17",
"Id": "RequireEncryption",
"Statement": [
{
"Sid": "RequireEncryptedTransport",
"Effect": "Deny",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::${aws_s3_bucket.terraform_state.bucket}/*"],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
},
{
"Sid": "RequireEncryptedStorage",
"Effect": "Deny",
"Action": ["s3:PutObject"],
"Resource": ["arn:aws:s3:::${aws_s3_bucket.terraform_state.bucket}/*"],
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
},
"Principal": "*"
}
]
}
1 ответ
Я бы начал с удаления этой политики корзины и просто включил новую настройку шифрования корзины по умолчанию в корзине S3. Если после этого вам по-прежнему отказывают в доступе, значит, в роли IAM, которую вы используете при запуске Terraform, отсутствуют некоторые разрешения.