

# Usar políticas do IAM para controlar o acesso de grupo de trabalho
<a name="workgroups-iam-policy"></a>

Para controlar o acesso a grupos de trabalho, use permissões do IAM no nível do recurso ou políticas do IAM baseadas em identidade. Sempre que você usar as políticas do IAM, siga as práticas recomendadas do IAM. Para obter mais informações, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

**nota**  
Para acessar grupos de trabalho habilitados para a propagação de identidade confiável, os usuários do Centro de Identidade do IAM devem ser atribuídos ao `IdentityCenterApplicationArn` que é retornado pela resposta da ação de API [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html) do Athena.

O procedimento a seguir é específico ao Athena. 

Para obter informações específicas do IAM, acesse os links listados no fim desta seção. Para obter informações sobre exemplos de políticas de grupo de trabalho em JSON, consulte [Exemplo de políticas de grupo de trabalho](example-policies-workgroup.md).

**Para usar o editor visual no console do IAM para criar uma política de grupo de trabalho**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Policies (Políticas)** e **Create policy (Criar política)**.

1. Na guia **Editor visual**, selecione **Escolher um serviço**. Em seguida, escolha o Athena para adicionar à política.

1. Escolha **Select actions (Selecionar ações)** e defina as ações para adicionar à política. O editor visual mostra as ações disponíveis no Athena. Para obter mais informações, consulte [Ações, recursos e chaves de condição do Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) na *Referência de autorização do serviço*.

1. Escolha **Add actions (Adicionar ações)** para digitar uma ação específica ou use caracteres curinga (\$1) para especificar várias ações. 

   Por padrão, a política que você está criando permite as ações que você escolhe. Se você escolher uma ou mais ações compatíveis com as permissões no nível do recurso `workgroup` no Athena, o editor listará o recurso `workgroup`. 

1. Escolha **Resources (Recursos)** para especificar os grupos de trabalho específicos para sua política. Para obter exemplos de políticas de grupo de trabalho em JSON, consulte [Exemplo de políticas de grupo de trabalho](example-policies-workgroup.md).

1. Especifique o recurso `workgroup` da seguinte forma:

   ```
   arn:aws:athena:<region>:<user-account>:workgroup/<workgroup-name>
   ```

1. Selecione **Review Policy (Revisar política)**, digite um **Name (Nome)** e uma **Description (Descrição)** (opcional) para a política que você está criando. Revise o resumo da política para ter certeza de que você concedeu as permissões que pretendia. 

1. Escolha **Criar política** para salvar sua nova política.

1. Anexe essa política baseada em política a um usuário, um grupo ou uma função.

Para obter mais informações, consulte os seguintes tópicos na *Referência de autorização do serviço* e no *Manual do usuário do IAM*:
+  [Ações, recursos e chaves de condição do Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) 
+  [Criar políticas com o editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) 
+  [Adicionar e remover políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 
+  [Controlar o acesso aos recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#access_controlling-resources) 

Para obter exemplos de políticas de grupo de trabalho em JSON, consulte [Exemplo de políticas de grupo de trabalho](example-policies-workgroup.md).

Para obter uma lista completa de ações do Amazon Athena, consulte os nomes das ações de API na [Referência de API do Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 

# Exemplo de políticas de grupo de trabalho
<a name="example-policies-workgroup"></a>

Esta seção inclui exemplos de políticas que você pode usar para habilitar várias ações nos grupos de trabalho. Sempre que você usar as políticas do IAM, siga as práticas recomendadas do IAM. Para obter mais informações, consulte [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*.

Um grupo de trabalho é um recurso do IAM gerenciado pelo Athena. Portanto, se sua política de grupo de trabalho usar ações que tomam `workgroup` como entrada, especifique o ARN do grupo de trabalho da seguinte forma:

```
"Resource": [arn:aws:athena:<region>:<user-account>:workgroup/<workgroup-name>]
```

Onde `<workgroup-name>` é o nome do seu grupo de trabalho. Por exemplo, para o grupo de trabalho chamado `test_workgroup`, especifique-o como um recurso da seguinte forma:

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"]
```

Para obter uma lista completa de ações do Amazon Athena, consulte os nomes das ações de API na [Referência de API do Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Para obter mais informações sobre as políticas do IAM, consulte [Criar políticas com o editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) no *Guia do usuário do IAM*. Para obter mais informações sobre como criar políticas do IAM para grupos de trabalho, consulte [Usar políticas do IAM para controlar o acesso de grupo de trabalho](workgroups-iam-policy.md).
+  [Example policy for full access to all workgroups](#example1-full-access-all-wkgs) 
+  [Example policy for full access to a specified workgroup](#example2-full-access-this-wkg) 
+  [Example policy for running queries in a specified workgroup](#example3-user-access) 
+  [Example policy for running queries in the primary workgroup](#example4-run-in-primary-access) 
+  [Example policy for management operations on a specified workgroup](#example5-manage-wkgs-access) 
+  [Example policy for listing workgroups](#example6-list-all-wkgs-access) 
+  [Example policy for running and stopping queries in a specific workgroup](#example7-run-queries-access) 
+  [Example policy for working with named queries in a specific workgroup](#example8-named-queries-access) 
+  [Example policy for working with Spark notebooks](#example9-spark-workgroup) 

**Example Exemplo de política para acesso total a todos os grupos de trabalho**  
A seguinte política permite acesso total a todos os recursos do grupo de trabalho que podem existir na conta. Recomendamos que você use essa política para os usuários da sua conta que devem administrar e gerenciar grupos de trabalho para todos os outros usuários.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

**Example Exemplo de política para acesso total a um grupo de trabalho especificado**  
A seguinte política permite acesso total ao único recurso do grupo de trabalho específico, denominado `workgroupA`. Você pode usar essa política para os usuários com controle total sobre um determinado grupo de trabalho.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions",
                "athena:ListWorkGroups",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:BatchGetQueryExecution",
                "athena:GetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:DeleteWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:GetWorkGroup",
                "athena:CreateWorkGroup"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        }
    ]
}
```

**Example Exemplo de política para execução de consultas em um grupo de trabalho especificado**  
Na política a seguir, um usuário tem permissão para executar consultas no `workgroupA` especificado e visualizá-las. O usuário não tem permissão de realizar tarefas de gerenciamento para o grupo de trabalho em si, como atualizá-las ou excluí-las. Observe que o exemplo de política não limita os usuários apenas a esse grupo de trabalho nem nega acesso a outros grupos de trabalho.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions",
                "athena:ListWorkGroups",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup", 
                "athena:BatchGetQueryExecution",
                "athena:GetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
            ]
        }
    ]
}
```

**Example Exemplo de política para execução de consultas em um grupo de trabalho principal**  
É possível modificar o exemplo anterior para permitir que um determinado usuário também execute consultas no grupo de trabalho principal.   
Recomendamos que você adicione o recurso do grupo de trabalho principal para todos os usuários configurados para executar consultas em seus grupos de trabalho designados. Adicionar esse recurso às políticas de usuário do grupo de trabalho será útil caso o grupo de trabalho designado seja excluído ou esteja desabilitado. Neste caso, eles podem continuar executando consultas no grupo de trabalho principal.
Para permitir que os usuários em sua conta executem consultas no grupo de trabalho principal, adicione uma linha que contenha o ARN do grupo de trabalho principal à seção de recursos do [Example policy for running queries in a specified workgroup](#example3-user-access), como no exemplo a seguir.  

```
arn:aws:athena:us-east-1:123456789012:workgroup/primary"
```

**Example Exemplo de política para operações de gerenciamento em um grupo de trabalho especificado**  
Na política a seguir, o usuário tem permissão de criar, excluir, obter detalhes e atualizar um grupo de trabalho `test_workgroup`.     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListEngineVersions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:GetWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:UpdateWorkGroup"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"
            ]
        }
    ]
}
```

**Example Exemplo de política para listagem de grupos de trabalho**  
A política a seguir permite que todos os usuários listem todos os grupos de trabalho:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Exemplo de política para execução e interrupção de consultas em um grupo de trabalho específico**  
Nesta política, o usuário tem a permissão de executar consultas no grupo de trabalho:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"
            ]
        }
    ]
}
```

**Example Exemplo de política para trabalhar com consultas nomeadas em um grupo de trabalho específico**  
Na política a seguir, o usuário tem permissões para criar, excluir e obter informações sobre consultas nomeadas no grupo de trabalho especificado:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:DeleteNamedQuery"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/test_workgroup"            ]
        }
    ]
}
```

**Example Exemplo de política para trabalhar com cadernos Spark no Athena**  
Use uma política como a apresentada a seguir para trabalhar com cadernos Spark no Athena.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreatingWorkGroupWithDefaults",
            "Action": [
                "athena:CreateWorkGroup",
                "s3:CreateBucket",
                "iam:CreateRole",
                "iam:CreatePolicy",
                "iam:AttachRolePolicy",
                "s3:GetBucketLocation",
                "athena:ImportNotebook"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/Demo*",
                "arn:aws:s3:::123456789012-us-east-1-athena-results-bucket-*",
                "arn:aws:iam::123456789012:role/service-role/AWSAthenaSparkExecutionRole-*",
                "arn:aws:iam::123456789012:policy/service-role/AWSAthenaSparkRolePolicy-*"
            ]
        },
        {
            "Sid": "AllowRunningCalculations",
            "Action": [
                "athena:ListWorkGroups",
                "athena:GetWorkGroup",
                "athena:StartSession",
                "athena:CreateNotebook",
                "athena:ListNotebookMetadata",
                "athena:ListNotebookSessions",
                "athena:GetSessionStatus",
                "athena:GetSession",
                "athena:GetNotebookMetadata",
                "athena:CreatePresignedNotebookUrl"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/Demo*"
        },
        {
            "Sid": "AllowListWorkGroupAndEngineVersions",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```