Antes de começar, encontre e crie o bucket do S3 que você deseja usar. Além disso, adicione permissões para que a instância de banco de dados do RDS possa acessar o bucket do S3. Para configurar esse acesso, crie uma política do IAM e uma função do IAM.
Como criar uma política do IAM para acesso ao Amazon S3
-
No Console de gerenciamento do IAM
, escolha Policies (Políticas) no painel de navegação. -
Crie uma nova política e use a guia Visual editor (Editor visual) para as etapas a seguir.
-
Para Service (Serviço), insira
S3
e escolha o serviço do S3. -
Para Actions (Ações), escolha o seguinte para conceder o acesso que a instância de banco de dados exige:
-
ListAllMyBuckets
– obrigatório -
ListBucket
– obrigatório -
GetBucketACL
– obrigatório -
GetBucketLocation
– obrigatório -
GetObject
– necessário para baixar arquivos do S3 emD:\S3\
-
PutObject
– necessário para fazer upload de arquivos deD:\S3\
no S3 -
ListMultipartUploadParts
– necessário para fazer upload de arquivos deD:\S3\
no S3 -
AbortMultipartUpload
– necessário para fazer upload de arquivos deD:\S3\
no S3
-
-
Para Resources (Recursos), as opções exibidas dependem de quais ações são escolhidas na etapa anterior. É possível ver opções para bucket, object (objeto) ou os dois. Para cada um deles, adicione o nome de recurso da Amazon (ARN) adequado.
Em bucket, adicione o ARN do bucket que você deseja usar. Por exemplo, se o bucket for chamado de
amzn-s3-demo-bucket
, defina o ARN comoarn:aws:s3:::
.amzn-s3-demo-bucket
Em object (objeto), insira o ARN do bucket e escolha uma das seguintes opções:
-
Para conceder acesso a todos os arquivos no bucket especificado, escolha Any (Qualquer um) para Bucket name (Nome do bucket) e Object name (Nome do objeto).
-
Para conceder acesso a pastas ou arquivos específicos no bucket, forneça os ARNs dos objetos e buckets específicos que você deseja que o SQL Server acesse.
-
-
Siga as instruções no console até terminar a criação da política.
O conteúdo anterior é um guia resumido para configurar uma política. Para instruções mais detalhadas sobre como criar políticas do IAM, consulte Criar políticas do IAM no Guia do usuário do IAM.
Como criar uma função do IAM que usa a política do IAM do procedimento anterior
-
No Console de gerenciamento do IAM
, escolha Roles (Funções) no painel de navegação. -
Crie uma nova função do IAM e escolha as seguintes opções à medida que elas forem exibidas no console:
-
Produto da AWS
-
RDS
-
RDS – adicionar função ao banco de dados
Escolha Next:Permissions (Próximo: permissões) na parte inferior.
-
-
Para Attach permissions policies (Anexar políticas de permissões), insira o nome da política do IAM criada anteriormente. Depois disso, escolha essa política na lista.
-
Siga as instruções no console até terminar a criação da função.
O anterior é um guia resumido para configurar uma função. Se quiser informações mais detalhadas sobre como criar funções, consulte Funções do IAM no Guia do usuário do IAM.
Para conceder acesso do Amazon RDS a um bucket do Simple Storage Service (Simple Storage Service (Amazon S3)), use o seguinte processo:
-
Crie uma política do IAM que conceda ao Amazon RDS acesso a um bucket do S3.
-
Crie uma função do IAM que o Amazon RDS possa assumir em seu nome para acessar seus buckets do S3.
Para ter mais informações, consulte Criar um perfil para delegar permissões a um usuário do IAM no Guia do usuário do IAM.
-
Anexe a política do IAM que você criou ao perfil do IAM que você criou.
Para criar a política do IAM
Inclua as ações adequadas para conceder o acesso que a instância de banco de dados exige:
-
ListAllMyBuckets
– obrigatório -
ListBucket
– obrigatório -
GetBucketACL
– obrigatório -
GetBucketLocation
– obrigatório -
GetObject
– necessário para baixar arquivos do S3 emD:\S3\
-
PutObject
– necessário para fazer upload de arquivos deD:\S3\
no S3 -
ListMultipartUploadParts
– necessário para fazer upload de arquivos deD:\S3\
no S3 -
AbortMultipartUpload
– necessário para fazer upload de arquivos deD:\S3\
no S3
-
O comando da AWS CLI a seguir cria uma política do IAM denominada
rds-s3-integration-policy
com essas opções. Ele concede acesso a um bucket denominadoamzn-s3-demo-bucket
.Para Linux, macOS ou Unix:
aws iam create-policy \ --policy-name
rds-s3-integration-policy
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }'Para Windows:
Altere os finais de linha para os que são compatíveis com a interface (
^
, em vez de\
). Além disso, no Windows, é necessário inserir um caractere de escape em todas as aspas duplas com um\
. Para evitar a necessidade de inserir um caractere de escape em aspas no JSON, é possível salvá-lo em um arquivo e passá-lo como um parâmetro.Primeiro, crie o arquivo
policy.json
com a seguinte política de permissão:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }Depois disso, use o seguinte comando para criar a política:
aws iam create-policy ^ --policy-name
rds-s3-integration-policy
^ --policy-document file://file_path
/assume_role_policy.json -
Após a criação da política, observe o nome de recurso da Amazon (ARN) da política. O ARN é necessário para uma etapa subsequente.
Para criar perfil do IAM
-
O comando da AWS CLI a seguir cria a função do IAM
rds-s3-integration-role
para essa finalidade.Para Linux, macOS ou Unix:
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'Para Windows:
Altere os finais de linha para os que são compatíveis com a interface (
^
, em vez de\
). Além disso, no Windows, é necessário inserir um caractere de escape em todas as aspas duplas com um\
. Para evitar a necessidade de inserir um caractere de escape em aspas no JSON, é possível salvá-lo em um arquivo e passá-lo como um parâmetro.Primeiro, crie o arquivo
assume_role_policy.json
com a seguinte política:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
Depois disso, use o comando a seguir para criar a função do IAM:
aws iam create-role ^ --role-name
rds-s3-integration-role
^ --assume-role-policy-document file://file_path
/assume_role_policy.jsonexemplo de usar a chave de contexto de condição global para criar a função do IAM
Recomendamos usar as chaves de contexto de condição global
aws:SourceArn
eaws:SourceAccount
em políticas baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o problema "confused deputy".Você pode usar as duas chaves de contexto de condição global e fazer com que o valor
aws:SourceArn
contenha o ID da conta. Nesses casos, verifique se o valoraws:SourceAccount
e a conta no valoraws:SourceArn
usa o mesmo ID de conta quando eles são usados na mesma instrução de política.-
Use
aws:SourceArn
se quiser acesso entre serviços para um único recurso. -
Use
aws:SourceAccount
se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.
Na política, certifique-se de usar a chave de contexto de condição global
aws:SourceArn
com o nome do recurso da Amazon (ARN) completo dos recursos acessando a função. Para integração do S3, certifique-se de incluir os ARNs de instância de banco de dados, conforme mostrado no exemplo a seguir.Para Linux, macOS ou Unix:
aws iam create-role \ --role-name
rds-s3-integration-role
\ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:Region
:my_account_ID
:db:db_instance_identifier
" } } } ] }'Para Windows:
Adicione as chaves de contexto de condição globais à
assume_role_policy.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:
Region
:my_account_ID
:db:db_instance_identifier
" } } } ] } -
Para anexar a política do IAM à função do IAM
-
O seguinte comando da AWS CLI anexa a política à função denominada
rds-s3-integration-role
. Substitua
pelo ARN da política que você anotou em uma etapa anterior.your-policy-arn
Para Linux, macOS ou Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-namerds-s3-integration-role
Para Windows:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role