Terraform не может управлять доступом к моментальному снимку состояния в S3, но вы можете использовать политику IAM корзины S3 для управления тем, какие операции разрешены для всей корзины S3 или для определенного пути в S3 ведро, используя пользователей и роли IAM.
Более подробная информация содержится в руководстве по Amazon. Написание политик IAM: как предоставить доступ к корзине Amazon S3 .
В вашем случае , Я думаю, у вас будет два набора политик, каждый из которых связан с различным набором субъектов IAM (пользователей или ролей). Первый будет предоставлять доступ на запись вашим администраторам, что может выглядеть как пример в руководстве по доступу к консоли:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::bucketname"]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3:::bucketname/stateobject.tfstate"]
}
]
}
Второй - предоставить доступ на чтение тем, кто в нем нуждается, что было бы очень аналогичен описанному выше, но исключает действия s3:PutObject
и s3:DeleteObject
, так что связанные участники имеют доступ только для чтения.