Criar manualmente uma função do IAM para a Auditoria do SQL Server - Amazon Relational Database Service

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.