Как создать S3 EncryptionClient / DecryptionClient с помощью AssumeRole - PullRequest
0 голосов
/ 16 января 2020

При записи в S3 я могу сделать:

sess, _ := session.NewSession(&aws.Config{Region: aws.String(region)})
config := &aws.Config{Credentials: stscreds.NewCredentials(sess, arn)}
svc := s3.New(sess, config)

, чтобы создать соединение S3, которое получает свои учетные данные из ARN предполагаемой роли и региона, как описано здесь . Это позволяет мне ограничить доступ к S3 на основе разрешений, которые я установил sh для этой роли наряду с обычными разрешениями S3. Однако я не уверен, как сделать то же самое, только безопасно, с s3crypto. Глядя на документацию, здесь , кажется, что мне нужно сделать что-то вроде этого:

// Create the inner S3 client
// region: a string that represents an AWS region
// arn: a role ARN that represents the assumer role of the service
sess, _ := session.NewSession(&aws.Config{Region: aws.String(region)})
config := &aws.Config{Credentials: stscreds.NewCredentials(sess, arn)}
svc := s3.New(sess, config)

// Create the content cipher
// keyarn: the ARN of the KMS key
keywrap := s3crypto.NewKMSKeyGenerator(kms.New(sess, config), keyarn)
builder := s3crypto.AESGCMContentCipherBuilder(keywrap)

// Build the encryptor
encryptor := s3crypto.NewEncryptionClient(sess, builder)
encryptor.S3Client = svc

// Build the decryptor
decryptor := s3crypto.NewDecryptionClient(sess)
decryptor.S3Client = svc

Проблема в том, что это а) довольно хакерский и б) может не работает для дешифрования, потому что клиент дешифрования использует стратегию загрузки, которая является частной для их API, и копирует клиент S3, который создается в процессе разработки и который нельзя установить, потому что он тоже является частным.

Это подводит меня на мой вопрос: как мне создать AWS EncryptionClient и DecryptionClient с предоставленным объектом *aws.Config, чтобы я мог предоставить свою роль-получателя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...