Требовать шифрование KMS с определенным идентификатором ключа в политике сегмента S3

Я пытаюсь сделать так, чтобы все объекты, помещенные в корзину, были зашифрованы с помощью определенного ключа KMS. Мне удалось потребовать шифрование KMS, но спецификация ключа не работает. Вот текущая политика (без реальных имен и идентификаторов):

{
    "Version": "2012-10-17",
    "Id": "PutObjPolicy",
    "Statement": [
        {
            "Sid": "DenyInsecureCommunications",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucket1,
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        },
        {
            "Sid": "DenyIncorrectEncryptionHeader",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket1/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption": "aws:kms",
                    "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:eu-central-1:123456789:key/12345-123-notmy-keyid-1234566"
                }
            }
        },

        {
            "Sid": "DenyUnEncryptedObjectUploads",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

Это корректно запрещает загрузку без указания шифрования на стороне сервера, но позволяет использовать ключ s3 по умолчанию.

1 ответ

Решение

Если существует несколько операторов условия или если к одному оператору условия подключено несколько ключей, условия оцениваются с использованием логического AND.

http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html

Это говорит о том, что политика двойного условия будет запрещать, только если обе строки не равны (то есть, если шифрование не используется, а идентификатор ключа неверен).

Разделение тестов на s3:x-amz-server-side-encryption а также s3:x-amz-server-side-encryption-aws-kms-key-id на две отдельные Deny политические заявления должны быть исправлением.

Другие вопросы по тегам