

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gerenciar permissões e acesso para uma arquitetura de várias contas
<a name="managing-permissions"></a>

**Topics**
+ [Considerações culturais de engenharia](engineering-cultural-considerations.md)
+ [Criar conjuntos de permissões](creating-permission-sets.md)
+ [Criar um limite de permissões](creating-a-permissions-boundary.md)
+ [Gerenciar permissões para indivíduos](managing-permissions-for-individuals.md)

# Considerações culturais de engenharia
<a name="engineering-cultural-considerations"></a>

Um dos pilares do AWS Well-Architected Framework é a excelência operacional. As equipes devem entender o [modelo operacional](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/operating-model.html) e seus papéis na obtenção de resultados de negócios. As equipes podem se concentrar em alcançar metas compartilhadas quando entendem suas responsabilidades, elas podem assumir a responsabilidade e saber como as decisões são tomadas.

Com empresas em estágio inicial que estão se desenvolvendo rapidamente, todos na equipe desempenham várias funções. Não é incomum que esses usuários tenham acesso altamente privilegiado a toda a Conta da AWS. À medida que as empresas crescem, elas geralmente querem seguir o princípio de *privilégio mínimo* e concedem somente as permissões necessárias para que o usuário faça seu trabalho. Para ajudar a limitar o escopo, é possível usar o [AWS Identity and Access Management Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para ver quais permissões um usuário ou um perfil do IAM está realmente usando. Isso possibilita remover qualquer excesso de permissões.

Talvez seja difícil decidir quem na sua empresa tem permissões para criar perfis do IAM. Isso geralmente é um vetor para escalar os privilégios. A escalada de privilégios ocorre quando um usuário pode expandir suas próprias permissões ou escopo de acesso. Por exemplo, se um usuário tem permissões limitadas, mas pode criar novos perfis do IAM, esse usuário pode escalar seus privilégios criando e assumindo um novo perfil do IAM que tenha a política gerenciada `AdministratorAccess` aplicada.

Algumas empresas limitam o provisionamento de perfis do IAM a uma equipe centralizada de pessoas confiáveis. A desvantagem dessa abordagem é que essa equipe pode rapidamente se tornar um gargalo, pois quase todas Serviços da AWS exigem uma função de IAM para operar. Como alternativa, você pode usar [limites de permissões](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) para delegar acesso ao IAM somente aos usuários que estão desenvolvendo, testando, lançando e gerenciando sua infraestrutura de nuvem. Por exemplo, políticas, consulte [Exemplos de limites de permissão](https://github.com/aws-samples/example-permissions-boundary) (GitHub).

As equipes de operações de desenvolvimento (DevOps), também conhecidas como equipes de *plataforma*, geralmente precisam equilibrar os recursos de autoatendimento de várias equipes internas de desenvolvimento com a estabilidade operacional do aplicativo. Promover uma cultura de engenharia que englobe autonomia, domínio e propósito no local de trabalho pode ajudar a motivar as equipes. Os engenheiros querem fazer seu trabalho de maneira autônoma, sem depender de outras pessoas para fazer as coisas por eles. Se DevOps as equipes puderem implementar soluções de autoatendimento, isso também reduzirá a quantidade de tempo que outras pessoas dependem delas para fazer as coisas.

# Criar conjuntos de permissões
<a name="creating-permission-sets"></a>

Você pode gerenciar o Conta da AWS acesso usando os [conjuntos de permissões](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) em Centro de Identidade do AWS IAM. Um *conjunto de permissões* é um modelo que ajuda a implantar uma ou mais políticas do IAM em várias Contas da AWS. Quando você atribui um conjunto de permissões a uma Conta da AWS, o IAM Identity Center cria um perfil do IAM e anexa suas políticas do IAM a esse perfil. Para obter mais informações, consulte [Criar e gerenciar conjuntos de permissão](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsets.html) (documentação do IAM Identity Center).

AWS recomenda criar conjuntos de permissões que mapeiem as diferentes personas da sua empresa.

**Topics**
+ [Conjunto de permissões de faturamento](#billing-permission-set)
+ [Conjunto de permissões de desenvolvedor](#developer-permission-set)
+ [Conjunto de permissões de produção](#production-permission-set)

Os conjuntos de permissões a seguir são trechos de um AWS CloudFormation modelo. Use esse código como ponto de partida e personalize-o para sua empresa. Para obter mais informações sobre CloudFormation modelos, consulte [Aprenda os conceitos básicos dos modelos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html) (CloudFormation documentação).

## Conjunto de permissões de faturamento
<a name="billing-permission-set"></a>

A equipe financeira usa **BillingAccessPermissionSet**para visualizar o painel do AWS Billing console e AWS Cost Explorer em cada conta.

```
BillingAccessPermissionSet:
  Type: "AWS::SSO::PermissionSet"
  Properties:
    Description: Access to Billing and Cost Explorer
    InstanceArn: !Sub "arn:${AWS::Partition}:sso:::instance/ssoins-instanceId"
    ManagedPolicies:
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/job-function/Billing"
    Name: BillingAccess
    SessionDuration: PT8H
    RelayStateType: https://console.aws.amazon.com/billing/home
```

## Conjunto de permissões de desenvolvedor
<a name="developer-permission-set"></a>

A equipe de engenharia usa **DeveloperAccessPermissionSet**para acessar contas que não são de produção.

```
DeveloperAccessPermissionSet:
  Type: "AWS::SSO::PermissionSet"
  Properties:
    Description: Access to provision resources through CloudFormation
    InlinePolicy: !Sub |-
      {
        "Version": "2012-10-17", 		 	 	 		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:${AWS::Partition}:iam::*:role/CloudFormationRole",
            "Condition": {
              "StringEquals": {
                "aws:ResourceAccount": "${!aws:PrincipalAccount}",
                "iam:PassedToService": "cloudformation.${AWS::URLSuffix}"
              }
            }
          },
          {
            "Effect": "Allow",
            "Action": [
              "cloudformation:ContinueUpdateRollback",
              "cloudformation:CreateChangeSet",
              "cloudformation:CreateStack",
              "cloudformation:DeleteStack",
              "cloudformation:RollbackStack",
              "cloudformation:UpdateStack"
            ],
            "Resource": "arn:${AWS::Partition}:cloudformation:*:*:stack/app-*",
            "Condition": {
              "ArnLike": {
                "cloudformation:RoleArn": "arn:${AWS::Partition}:iam::${!aws:PrincipalAccount}:role/CloudFormationRole"
              },
              "Null": {
                "cloudformation:ImportResourceTypes": true
              }
            }
          },
          {
            "Effect": "Allow",
            "Action": [
              "cloudformation:CancelUpdateStack",
              "cloudformation:DeleteChangeSet",
              "cloudformation:DetectStackDrift",
              "cloudformation:DetectStackResourceDrift",
              "cloudformation:ExecuteChangeSet",
              "cloudformation:TagResource",
              "cloudformation:UntagResource",
              "cloudformation:UpdateTerminationProtection"
            ],
            "Resource": "arn:${AWS::Partition}:cloudformation:*:*:stack/app-*"
          },
          {
           "Effect": "Allow",
            "Action": [
              "cloudformation:CreateUploadBucket",
              "cloudformation:ValidateTemplate",
              "cloudformation:EstimateTemplateCost"
            ],
            "Resource": "*"
          }
        ]
      }
    InstanceArn: !Sub "arn:${AWS::Partition}:sso:::instance/ssoins-instanceId"
    ManagedPolicies:
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/AWSServiceCatalogEndUserFullAccess"
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/AWSBillingReadOnlyAccess"
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/AWSSupportAccess"
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/ReadOnlyAccess"
    Name: DeveloperAccess
    SessionDuration: PT8H
```

## Conjunto de permissões de produção
<a name="production-permission-set"></a>

A equipe de engenharia usa **ProductionPermissionSet**para acessar as contas de produção. Esse conjunto de permissões tem acesso limitado, somente para visualização.

```
ProductionPermissionSet:
  Type: "AWS::SSO::PermissionSet"
  Properties:
    Description: Access to production accounts
    InlinePolicy: !Sub |-
      {
        "Version": "2012-10-17", 		 	 	 		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:${AWS::Partition}:iam::*:role/CloudFormationRole",
            "Condition": {
              "StringEquals": {
                "aws:ResourceAccount": "${!aws:PrincipalAccount}",
                "iam:PassedToService": "cloudformation.${AWS::URLSuffix}"
              }
            }
          },
          {
            "Effect": "Allow",
            "Action": "cloudformation:ContinueUpdateRollback",
            "Resource": "arn:${AWS::Partition}:cloudformation:*:*:stack/app-*",
            "Condition": {
              "ArnLike": {
                "cloudformation:RoleArn": "arn:${AWS::Partition}:iam::${!aws:PrincipalAccount}:role/CloudFormationRole"
              }
            }
          },
          {
            "Effect": "Allow",
            "Action": "cloudformation:CancelUpdateStack",
            "Resource": "arn:${AWS::Partition}:cloudformation:*:*:stack/app-*"
          }
        ]
      }
    InstanceArn: !Sub "arn:${AWS::Partition}:sso:::instance/ssoins-instanceId"
    ManagedPolicies:
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/AWSBillingReadOnlyAccess"
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/AWSSupportAccess"
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/job-function/ViewOnlyAccess"
    Name: ProductionAccess
    SessionDuration: PT2H
```

# Criar um limite de permissões
<a name="creating-a-permissions-boundary"></a>

Após implantar os conjuntos de permissões, você estabelece um limite de permissões. O *limite de permissões* é um mecanismo para delegação de acesso ao IAM somente aos usuários que estão desenvolvendo, testando, lançando e gerenciando sua infraestrutura de nuvem. Esses usuários podem realizar somente as ações permitidas pela política e pelo limite de permissões.

Você pode definir o limite de permissões em um AWS CloudFormation modelo e depois usá-lo CloudFormation StackSets para implantar o modelo em várias contas. Isso ajuda a estabelecer e manter políticas padronizadas em toda a organização com uma única operação. Para obter mais informações e instruções, consulte [Trabalhando com AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) (CloudFormation documentação).

O CloudFormation modelo a seguir provisiona uma função do IAM e cria uma política do IAM que atua como um limite de permissão. Usando um conjunto de pilhas, é possível implantar esse modelo em todas as contas-membro da organização.

```
CloudFormationRole:
  Type: "AWS::IAM::Role"
  Properties:
    AssumeRolePolicyDocument:
      Version: "2012-10-17"
      Statement:
        Effect: Allow
        Principal:
          Service: !Sub "cloudformation.${AWS::URLSuffix}"
        Action: "sts:AssumeRole"
        Condition:
          StringEquals:
            "aws:SourceAccount": !Ref "AWS::AccountId"
    Description: !Sub "DO NOT DELETE - Used by CloudFormation. Created by CloudFormation ${AWS::StackId}"
    ManagedPolicyArns:
      - !Sub "arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess"
    PermissionsBoundary: !Ref DeveloperBoundary
    RoleName: CloudFormationRole

DeveloperBoundary:
  Type: "AWS::IAM::ManagedPolicy"
  Properties:
    Description: Permission boundary for developers
    ManagedPolicyName: PermissionsBoundary
    PolicyDocument:
      Version: "2012-10-17"
      Statement:
        - Sid: AllowModifyIamRolesWithBoundary
          Effect: Allow
          Action:
            - "iam:AttachRolePolicy"
            - "iam:CreateRole"
            - "iam:DeleteRolePolicy"
            - "iam:DetachRolePolicy"
            - "iam:PutRolePermissionsBoundary"
            - "iam:PutRolePolicy"
          Resource: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/app/*"
          Condition:
            ArnEquals:
              "iam:PermissionsBoundary": !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:policy/PermissionsBoundary"
        - Sid: AllowModifyIamRoles
          Effect: Allow
          Action:
            - "iam:DeleteRole"
            - "iam:TagRole"
            - "iam:UntagRole"
            - "iam:UpdateAssumeRolePolicy"
            - "iam:UpdateRole"
            - "iam:UpdateRoleDescription"
          Resource: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/app/*"
        - Sid: OverlyPermissiveAllowedServices
          Effect: Allow
          Action:
            - "lambda:*"
            - "apigateway:*"
            - "events:*"
            - "s3:*"
            - "logs:*"
          Resource: "*"
```

A **CloudFormationRole**função, a **PermissionsBoundary**política e o conjunto de **DeveloperAccess**permissões trabalham juntos para conceder as seguintes permissões:
+ Os usuários têm acesso somente para leitura à maioria Serviços da AWS, por meio da política **ReadOnlyAccess** AWS gerenciada.
+ Os usuários têm acesso a casos de suporte abertos, por meio da política AWS gerenciada de **AWSSupportacesso**.
+ Os usuários têm acesso somente para leitura ao painel do AWS Billing console, por meio da política **AWSBillingReadOnlyAccess** AWS gerenciada.
+ Os usuários podem provisionar produtos do Service Catalog, por meio da política **AWSServiceCatalogEndUserFullAccess** AWS gerenciada.
+ Os usuários podem validar e estimar o custo de qualquer CloudFormation modelo, por meio da política embutida.
+ Ao usar a função **CloudFormationRole**do IAM, os usuários podem criar, atualizar ou excluir qualquer CloudFormation pilha que comece com **app/**.
+ Os usuários podem usar CloudFormation para criar, atualizar ou excluir funções do IAM que começam com **app/**. A política **PermissionsBoundary**do IAM impede que os usuários aumentem seus privilégios.
+ Os usuários podem provisionar recursos da Amazon AWS Lambda EventBridge CloudWatch, Amazon, Amazon Simple Storage Service (Amazon S3) e Amazon API Gateway somente usando. CloudFormation

A imagem a seguir mostra como um usuário autorizado, como um desenvolvedor, pode criar um novo perfil do IAM em uma conta-membro usando os conjuntos de permissões, perfis do IAM e limites de permissões descritos neste guia:

1. O usuário se autentica no IAM Identity Center e assume a **DeveloperAccess**função do IAM.

1. O usuário inicia a `cloudformation:CreateStack` ação e assume a **CloudFormationRole**função do IAM.

1. O usuário inicia a `iam:CreateRole` ação e usa CloudFormation para criar uma nova função do IAM.

1. A política **PermissionsBoundary**do IAM é aplicada à nova função do IAM.



![\[Usuário criando um perfil do IAM que está sujeito ao limite de permissões na conta-membro\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/transitioning-to-multiple-aws-accounts/images/2_create-iam-role.png)


A **CloudFormationRole**função tem a política [AdministratorAccess](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)gerenciada anexada, mas devido à política do **PermissionsBoundary**IAM, as permissões efetivas da **CloudFormationRole**função se tornam iguais às da **PermissionsBoundary**política. A **PermissionsBoundary**política faz referência a si mesma ao permitir a `iam:CreateRole` ação, o que garante que as funções possam ser criadas somente se o limite de permissões for aplicado.

# Gerenciar permissões para indivíduos
<a name="managing-permissions-for-individuals"></a>

Ao usar conjuntos de permissões, o limite de permissões e a função **CloudFormationRole**do IAM, você pode limitar a quantidade de permissões que precisa atribuir diretamente aos diretores individuais. Isso ajuda a gerenciar o acesso à medida que sua empresa cresce e a aplicar a prática recomendada de segurança de conceder privilégio mínimo.

Também é possível usar *perfis vinculados ao serviço* que concedem permissões a um serviço da AWS para provisionar recursos em seu nome. Em vez de conceder permissões à entidade principal do IAM (usuário, grupo de usuários ou perfil), é possível conceder as permissões ao serviço. Por exemplo, a função vinculada ao serviço de [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)permite que você provisione seus próprios modelos, recursos e ambientes, sem atribuir permissões ao diretor do IAM. Para obter mais informações, consulte [Serviços da AWS que funcionam com o IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) e [Usar perfis vinculados ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) (documentação do IAM).

Outra prática recomendada é limitar a quantidade de acesso que as pessoas têm ao Console de gerenciamento da AWS. [Ao limitar o acesso ao console, você pode exigir que as pessoas provisionem recursos usando tecnologias de infraestrutura como código (IaC) [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html), como [HashiCorp Terraform](https://www.terraform.io/) ou Pulumi.](https://www.pulumi.com/) Gerenciando a infraestrutura por meio do IaC, você rastreia as mudanças nos recursos ao longo do tempo e introduz mecanismos para aprovar mudanças, como GitHub pull requests.