

# Configurar permissões para o AgentCore Gateway
<a name="gateway-prerequisites-permissions"></a>

Para usar o Amazon Bedrock AgentCore Gateway e seus recursos, você precisará considerar as seguintes permissões:

1.  ** builder/user Permissões de gateway** — Permissões fornecidas a um construtor ou usuário de gateway para permitir que ele crie, gerencie e/ou use AgentCore gateways.

1.  **Permissões da função de serviço do gateway** — Permissões fornecidas para uma função de serviço que você criará para o seu gateway. Essas permissões permitem que o AgentCore serviço Amazon Bedrock execute ações em nome da identidade que invoca o gateway.

1.  **Resource-based permissões** — Permissões anexadas aos recursos para permitir que a função de serviço do gateway os acesse. Você incluirá o Amazon Resource Name (ARN) da função de serviço de gateway na política baseada `Principal` em recursos.

1.  **Políticas baseadas em recursos do gateway** — Políticas anexadas diretamente aos recursos do gateway para controlar quais diretores podem invocá-las. Para obter mais informações, consulte [Resource-based as políticas do Amazon Bedrock AgentCore](resource-based-policies.md).

**nota**  
Se você preferir não configurar permissões personalizadas, você pode usar as seguintes opções para facilitar a configuração: \* Anexe a [BedrockAgentCoreFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/BedrockAgentCoreFullAccess.html)uma identidade do IAM para permitir que ela crie, gerencie e invoque gateways. \* Use o console AWS de gerenciamento ou a AgentCore CLI para criar uma função de serviço de AgentCore gateway com as permissões adequadas e destinos de gateway com as políticas adequadas baseadas em recursos para permitir que a função de serviço os acesse.

Escolha um tópico para saber mais:

**Topics**
+ [Construtor de gateway e permissões de usuário](#gateway-user-permissions)
+ [AgentCore Permissões da função de serviço do gateway](#gateway-service-role-permissions)
+ [Práticas recomendadas para permissões de gateway](#gateway-prerequisites-best-practices)

## Construtor de gateway e permissões de usuário
<a name="gateway-user-permissions"></a>

Para que uma identidade possa criar, gerenciar ou usar gateways, você precisa anexar uma política baseada em identidade à identidade do IAM para permitir que ela execute ações do [Amazon](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html) Bedrock. AgentCore-related Para obter permissões abrangentes, você pode usar a política [BedrockAgentCoreFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/BedrockAgentCoreFullAccess.html)gerenciada.

Para maior segurança e controle, você pode criar sua própria política personalizada reduzindo as permissões na política de acesso total. Por exemplo, a política a seguir permite que uma identidade execute ações relacionadas ao AgentCore Gateway, mas não a outros AgentCore serviços, como AgentCore Runtime ou AgentCore Browser:

```
{
"Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock-agentcore:*Gateway*",
        "bedrock-agentcore:*WorkloadIdentity",
        "bedrock-agentcore:*CredentialProvider",
        "bedrock-agentcore:*Token*",
        "bedrock-agentcore:*Access*"
      ],
      "Resource": "arn:aws:bedrock-agentcore:*:*:*gateway*"
    }
  ]
}
```

A política personalizada a seguir é mais restritiva e só permite acesso de leitura a gateways e destinos de gateway.  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "bedrock-agentcore:ListGateways",
        "bedrock-agentcore:GetGateway",
        "bedrock-agentcore:ListGatewayTargets",
        "bedrock-agentcore:GetGatewayTarget"
      ],
      "Resource": "arn:aws:bedrock-agentcore:*:*:*gateway*"
    }
  ]
}
```

### Permissões de acesso ao gateway (autorização de entrada)
<a name="gateway-access-permissions"></a>

Além das permissões relacionadas ao gateway, você também precisará configurar permissões para que as identidades possam acessar o gateway durante a invocação. Você configurará essas permissões ao [configurar a autorização de entrada](gateway-inbound-auth.md).

## AgentCore Permissões da função de serviço do gateway
<a name="gateway-service-role-permissions"></a>

Ao criar um gateway, você precisa de uma função de serviço que tenha permissões para assumir uma função do IAM e acessar AWS recursos e serviços externos em nome da função do IAM. Você pode criar a função de serviço das seguintes formas:
+ Se você criar um gateway no AWS Management Console ou por meio da AgentCore CLI, poderá optar por permitir a criação AgentCore automática de uma função de serviço para você com as permissões necessárias. Se você preferir esse método, pode pular esse pré-requisito.
+ Se você preferir criar sua própria função de serviço para maior personalização, precisará configurar a função com as permissões descritas neste tópico. Para saber como criar uma função de serviço e anexar permissões a ela, consulte [Criar uma função para delegar permissões a um AWS serviço](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-service.html).

As permissões necessárias para uma função de serviço estão nos seguintes tópicos:

**Topics**
+ [Permissões de confiança](#gateway-service-role-permissions-trust)
+ [Permissões de autorização de saída](#gateway-service-role-permissions-outbound-auth)
+ [Permissões para acessar AWS recursos](#gateway-service-role-permissions-resources)

### Permissões de confiança
<a name="gateway-service-role-permissions-trust"></a>

Uma função de serviço deve ter uma [política de confiança](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#term_trust_policy) anexada que permita ao AgentCore serviço assumir uma identidade do IAM e realizar ações em seu nome.

Veja a seguir um exemplo de uma política de confiança que você pode usar.

```
{
"Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "GatewayAssumeRolePolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock-agentcore.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "111122223333"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:gateway/gateway-name-*"
        }
      }
    }
  ]
}
```

**nota**  
Como você não saberá o ARN do gateway antes de criá-lo, você pode omitir o `Condition` campo ao criar a função de serviço pela primeira vez. Depois de criar o gateway, adicione o `Condition` campo novamente à política como uma prática de segurança recomendada e faça o seguinte: \* Substitua o valor da chave de `aws:SourceAccount` condição pelo ID da conta à qual o gateway pertence. \* Substitua a chave de `aws:SourceArn` condição pelo ARN do gateway.

### Permissões de autorização de saída
<a name="gateway-service-role-permissions-outbound-auth"></a>

Dependendo do tipo de autorização de saída que você usa para seus destinos de gateway, você precisa adicionar permissões à função de serviço para permitir que ela invoque o destino. Essas permissões permitem que a função de serviço do gateway recupere as credenciais de autorização para invocar o destino. Você pode fazer isso no processo de [configuração da autorização de saída](gateway-outbound-auth.md).

### Permissões para acessar AWS recursos
<a name="gateway-service-role-permissions-resources"></a>

Dependendo da configuração do gateway ou dos destinos que você escolher adicionar ao gateway, talvez seja necessário adicionar permissões à função de serviço do gateway para permitir que ele acesse AWS recursos. Os tópicos a seguir abrangem alguns recursos aos quais sua função de serviço de gateway pode precisar acessar:

#### Acesse uma função Lambda
<a name="gateway-lambda-permissions"></a>

Se você anexar um alvo Lambda ao seu gateway, precisará adicionar permissões para a função de serviço do AgentCore Gateway para poder invocar a função fazendo o seguinte:
+ Anexe uma política baseada em identidade à função de serviço do AgentCore Gateway que permita a `lambda:InvokeFunction` ação no recurso da função Lambda.
+ (Se a função estiver em uma conta diferente da função de serviço de gateway) Anexe uma política baseada em recursos à função Lambda que permita que o principal da função de serviço de gateway execute a ação `lambda:InvokeFunction` no recurso da função Lambda.

Selecione um tópico para saber como configurar as permissões:

**Topics**

<a name="gateway-lambda-identity-based-permissions"></a>===== Anexar uma política baseada em identidade à função de serviço do gateway

Para permitir que a função de serviço de gateway acesse um alvo do Lambda, anexe a seguinte política baseada em identidade à sua função de serviço do AgentCore Gateway escolhendo o tópico em [Adicionar e remover permissões de identidade do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) relacionadas ao seu caso de uso e seguindo as etapas.

```
{
"Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "AmazonBedrockAgentCoreGatewayLambdaProd",
        "Effect": "Allow",
        "Action": [
            "lambda:InvokeFunction"
        ],
        "Resource": [
            "arn:aws:lambda:us-east-1:123456789012:function:FunctionName"
        ]
    }]
}
```

Substitua o ARN no `Resource` campo pelo ARN do seu destino do gateway de funções Lambda. Se seu gateway tiver vários destinos Lambda, você poderá adicionar o ARN de cada função à lista. `Resource`

<a name="gateway-lambda-resource-based-permissions"></a>===== (Se a função estiver em outra conta) Anexe uma política baseada em recursos à função Lambda

Se o destino da função Lambda estiver em uma conta diferente da função de serviço de gateway, você precisará anexar uma política baseada em recursos para permitir que a função de serviço de gateway a acesse. Veja a seguir um exemplo de política que você pode usar:

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "LambdaAllowGatewayServiceRoleMyFunction",
            "Effect": "Allow",
            "Principal": {
              "AWS": "arn:aws:iam::123456789012:role/MyGatewayExecutionRole"
            },
            "Action": "lambda:InvokeFunction",
            "Resource":  "arn:aws:lambda:us-east-1:123456789012:function:MyFunction"
        }
     ]
}
```

Substitua os valores dos seguintes campos:
+  `AWS`— Use o ARN da sua função de serviço de gateway.
+  `Resource`— Use o ARN da sua função Lambda.  
Para saber como anexar uma política baseada em recursos à função Lambda que permite que sua função de serviço de gateway acesse a função, selecione um dos seguintes métodos  

------
#### [ Console ]

1. ====== Para anexar uma política baseada em recursos à sua função Lambda no Management Console AWS 

1. Siga as etapas na guia **Console** em [Visualização de políticas de IAM baseadas em recursos no Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).

1. Na seção **Declarações de Resource-based política**, escolha **Adicionar permissões**.

1. Selecione a ** AWS conta** e preencha os seguintes campos:
   +  **ID da declaração** — Um identificador exclusivo para a declaração que fornece permissões para que a função do serviço de gateway acesse a função.
   +  **Principal** — Especifique o ARN da sua função de serviço de gateway.
   +  **Ação** — Selecione`lambda:InvokeFunction`.

------
#### [ CLI ]

1. Para anexar uma política baseada em recursos à sua função do Lambda usando a AWS CLI, siga as etapas em Concedendo [acesso à função Lambda aos AWS serviços e especifique sua função](https://docs.aws.amazon.com/lambda/latest/dg/permissions-function-services.html) de serviço de gateway como a. `principal`

   Você pode executar o código a seguir em um terminal para adicionar permissões para que sua função de serviço de gateway acesse a função em{{us-east-1}}:

   ```
   aws lambda add-permission \
     --function-name "MyFunction" \
     --statement-id "GatewayInvoke" \
     --action "lambda:InvokeFunction" \
     --principal "arn:aws:iam::123456789012:role/MyGatewayServiceRole"
     --region us-east-1
   ```

------

**Example**  

#### Acesse objetos do Amazon S3
<a name="gateway-s3-permissions"></a>

Se você planeja incluir uma definição de ferramenta de destino de gateway a partir de um URI do Amazon S3, precisará incluir permissões para que a função de serviço de gateway acesse o bucket. A [AmazonS3ReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3ReadOnlyAccess.html)política é um exemplo de política que você pode anexar à função de serviço. Você pode definir o escopo `Resource` até o local do S3 para maior segurança.

#### Permissões do modelo Smithy
<a name="gateway-smithy-permissions"></a>

Se você planeja adicionar um alvo Smithy, você precisa adicionar permissões para a função de serviço de gateway acessar os AWS serviços aos quais seus modelos Smithy se referem. Para determinar quais permissões precisam ser anexadas à função de serviço, consulte a documentação desse serviço.

Você pode adicionar permissões à função de serviço escolhendo o tópico em [Adicionar e remover permissões de identidade do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) relacionadas ao seu caso de uso e seguindo as etapas.

Por exemplo, se o modelo de destino do Smithy acessar uma tabela do DynamoDB, você poderá anexar a seguinte política para permitir que a função de serviço execute operações do DynamoDB na tabela:

```
{
"Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:PutItem",
        "dynamodb:UpdateItem",
        "dynamodb:DeleteItem",
        "dynamodb:Query",
        "dynamodb:Scan"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/*"
    }
  ]
}
```

## Práticas recomendadas para permissões de gateway
<a name="gateway-prerequisites-best-practices"></a>

 **Siga o princípio do menor privilégio**   
+ Conceda somente as permissões necessárias para que seu Gateway funcione
+ Use ARNs de recursos específicos em vez de curingas quando possível
+ Revise e audite regularmente as permissões

 **Funções separadas por função**   
+ Use funções diferentes para gerenciamento e execução
+ Crie funções separadas para diferentes gateways com finalidades diferentes

 **Armazenamento seguro de credenciais**   
+ Armazene chaves de API e credenciais OAuth no Secrets Manager AWS 
+ Alternar credenciais regularmente

 **Monitore e audite**   
+ Habilitar o CloudTrail registro para operações do Gateway
+ Revise regularmente os padrões de acesso e o uso de permissões

 **Condições de uso nas políticas**   
+ Adicione condições para limitar quando e como as permissões podem ser usadas
+ Considere o uso de restrições de IP de origem para operações de gerenciamento