

# Criar manualmente uma função do IAM para a Auditoria do SQL Server
<a name="Appendix.SQLServer.Options.Audit.IAM"></a>

Normalmente, quando você cria uma nova opção, o Console de gerenciamento da AWS 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Manual 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html).

**Example 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 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-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"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

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.

**Example 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)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

**Example 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.