Criar manualmente uma função do IAM para a Auditoria do SQL Server
Normalmente, quando você cria uma nova opção, o AWS Management Console cria a função do IAM e a política de confiança do IAM para você. No entanto, é possível criar manualmente uma nova função do IAM para uso com Auditorias do SQL Server, para poder personalizá-la com quaisquer requisitos adicionais que você possa ter. Para fazer isso, você cria uma função do IAM e delega permissões para que o serviço do Amazon RDS possa usar seu bucket do Amazon S3. Ao criar essa função do IAM, você anexa as políticas de confiança e permissões. A política de confiança permite que o Amazon RDS assuma essa função. A política de permissão define as ações que essa função pode realizar. Para obter mais informações, consulte Criar uma função para delegar permissões a um produto da AWS no Guia do usuário do AWS Identity and Access Management.
Você pode usar os exemplos nesta seção para criar as relações de confiança e as políticas de permissões necessárias.
O exemplo a seguir mostra uma relação de confiança para o SQL Server Audit. Ela usa o principal de serviço rds.amazonaws.com
para permitir que o RDS grave no bucket do S3. Um escopo principal do serviço é um identificador que é usado para conceder permissões a um serviço. Sempre que você permitir acesso ao rds.amazonaws.com
dessa forma, está permitindo que o RDS execute uma ação em seu nome. Para obter mais informações sobre principais de serviço, consulte Elementos da política JSON da AWS: principal.
exemplo relação de confiança para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "
rds.amazonaws.com
" }, "Action": "sts:AssumeRole" } ] }
Recomendamos usar as chaves de contexto de condição global aws:SourceArn
e aws:SourceAccount
em relações 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 valor aws:SourceAccount
e a conta no aws:SourceArn
usa o mesmo ID de conta quando eles são usados na mesma instrução.
-
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 relação de confiança, 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 que acessam a função. Para o SQL Server Audit, certifique-se de incluir o grupo de opções de banco de dados e as instâncias de banco de dados, conforme mostrado no exemplo a seguir.
exemplo relação de confiança com a chave de contexto de condição global para SQL Server Audit
{ "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
", "arn:aws:rds:Region
:my_account_ID
:og:option_group_name
" ] } } } ] }
No exemplo a seguir de uma política de permissões para SQL Server Audit, especificamos um ARN para o bucket do Simple Storage Service (Amazon S3). Você pode usar ARNs para identificar uma conta, usuário ou função específica à qual deseja conceder acesso. Para obter mais informações sobre como usar ARNs, consulte Nomes de recurso da Amazon (ARNs).
exemplo política de permissões para SQL Server Audit
{ "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:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/key_prefix
/*" } ] }
nota
A ação s3:ListAllMyBuckets
é necessária para verificar se a mesma conta do AWS tem o bucket do S3 e a instância de banco de dados SQL Server. A ação lista os nomes dos buckets na conta.
Os namespaces do bucket do S3 são globais. Se você excluir acidentalmente seu bucket, outro usuário poderá criar um bucket com o mesmo nome em uma conta diferente. Depois disso, os dados de auditoria do SQL Server são gravados no novo bucket.