

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Administración de permisos y acceso para una arquitectura de varias cuentas
<a name="managing-permissions"></a>

**Topics**
+ [Consideraciones culturales de ingeniería](engineering-cultural-considerations.md)
+ [Creación de conjuntos de permisos](creating-permission-sets.md)
+ [Creación de un límite de permisos](creating-a-permissions-boundary.md)
+ [Administración de los permisos de los individuos](managing-permissions-for-individuals.md)

# Consideraciones culturales de ingeniería
<a name="engineering-cultural-considerations"></a>

Uno de los pilares del AWS Well-Architected Framework es la excelencia operativa. Los equipos deben entender el [modelo operativo](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/operating-model.html) y su papel en el logro de los resultados de su negocio. Los equipos pueden centrarse en alcanzar los objetivos compartidos cuando comprenden sus responsabilidades, son capaces de asumirlas y saben cómo se toman las decisiones.

Con empresas en fase inicial que se están desarrollando rápidamente, todos los miembros del equipo desempeñan varios roles. No es raro que estos usuarios tengan un acceso altamente privilegiado a toda la Cuenta de AWS. A medida que las empresas crecen, a menudo quieren seguir el principio de *privilegio mínimo* y solo conceden los permisos necesarios para que el usuario pueda realizar su trabajo. Para ayudarlo a limitar el alcance, puede usar [AWS Identity and Access Management Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para ver qué permisos utiliza realmente un usuario o un rol de IAM, lo que le permite eliminar cualquier exceso de permisos.

Decidir quién en su empresa tiene permisos para crear roles de IAM puede resultar difícil. Suele ser un vector para escalar privilegios. La escalada de privilegios se produce cuando un usuario puede ampliar sus propios permisos o su alcance de acceso. Por ejemplo, si un usuario tiene permisos limitados, pero puede crear nuevos roles de IAM, ese usuario podría escalar sus privilegios al crear y asumir un nuevo rol de IAM que tenga aplicada la política administrada `AdministratorAccess`.

Algunas empresas limitan el aprovisionamiento de roles de IAM a un equipo centralizado de individuos de confianza. La desventaja de este enfoque es que este equipo puede convertirse rápidamente en un obstáculo, ya que casi todos Servicios de AWS requieren una función de IAM para funcionar. Como alternativa, puede utilizar [límites de permisos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) para delegar el acceso a IAM únicamente a los usuarios que desarrollen, prueben, lancen y administren su infraestructura de nube. Para ver políticas de ejemplo, consulte [Ejemplos de límites de permisos](https://github.com/aws-samples/example-permissions-boundary) (). GitHub

Los equipos de operaciones de desarrollo (DevOps), también conocidos como equipos de *plataformas*, suelen necesitar equilibrar las capacidades de autoservicio de varios equipos de desarrollo internos con la estabilidad operativa de las aplicaciones. Fomentar una cultura de ingeniería que abarque la autonomía, el dominio y el propósito en el lugar de trabajo puede ayudar a motivar a los equipos. Los ingenieros quieren hacer su trabajo de manera autodirigida, sin depender de que otros hagan las cosas por ellos. Si DevOps los equipos pueden implementar soluciones de autoservicio, esto también reduce la cantidad de tiempo que otros dependen de ellos para realizar sus tareas.

# Creación de conjuntos de permisos
<a name="creating-permission-sets"></a>

Puede administrar el Cuenta de AWS acceso mediante los [conjuntos de permisos incluidos](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html). AWS IAM Identity Center Un *conjunto de permisos* es una plantilla que lo ayuda a implementar una o más políticas de IAM en varias Cuentas de AWS. Al asignar un conjunto de permisos para configurar una Cuenta de AWS, IAM Identity Center crea un rol de IAM y asocia las políticas de IAM a ese rol. Para obtener más información, consulte [Crear y administrar conjuntos de permisos](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsets.html) (documentación de IAM Identity Center).

AWS recomienda crear conjuntos de permisos que se asignen a las distintas personas de su empresa.

**Topics**
+ [Conjunto de permisos de facturación](#billing-permission-set)
+ [Conjunto de permisos de desarrollador](#developer-permission-set)
+ [Conjunto de permisos de producción](#production-permission-set)

Los siguientes conjuntos de permisos son fragmentos de una AWS CloudFormation plantilla. Debería usar este código como punto de partida y personalizarlo para su negocio. Para obtener más información sobre CloudFormation las plantillas, consulte [Aprenda los conceptos básicos de las plantillas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html) (CloudFormation documentación).

## Conjunto de permisos de facturación
<a name="billing-permission-set"></a>

El equipo de finanzas suele **BillingAccessPermissionSet**ver el panel de control de la AWS Billing consola y AWS Cost Explorer el interior de cada cuenta.

```
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 permisos de desarrollador
<a name="developer-permission-set"></a>

El equipo de ingeniería suele acceder **DeveloperAccessPermissionSet**a las cuentas que no son de producción.

```
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 permisos de producción
<a name="production-permission-set"></a>

El equipo de ingeniería utiliza **ProductionPermissionSet**para acceder a las cuentas de producción. Este conjunto de permisos tiene acceso limitado y de solo lectura.

```
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
```

# Creación de un límite de permisos
<a name="creating-a-permissions-boundary"></a>

Después de implementar los conjuntos de permisos, debe establecer un límite de permisos. Este *límite de permisos* es un mecanismo para delegar el acceso a IAM únicamente a los usuarios que están desarrollando, probando, lanzando y administrando su infraestructura de nube. Esos usuarios solo pueden realizar las acciones permitidas por la política y el límite de permisos.

Puede definir el límite de permisos en una AWS CloudFormation plantilla y luego usarlo CloudFormation StackSets para implementar la plantilla en varias cuentas. Esto lo ayuda a establecer y mantener políticas estandarizadas en toda la organización con una sola operación. Para obtener más información e instrucciones, consulte [Trabajar con AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) (CloudFormation documentación).

La siguiente CloudFormation plantilla establece una función de IAM y crea una política de IAM que actúa como límite de permisos. Con un conjunto de pilas, puede implementar esta plantilla en todas las cuentas miembro de su organización.

```
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: "*"
```

El **CloudFormationRole**rol, la **PermissionsBoundary**política y el conjunto de **DeveloperAccess**permisos funcionan juntos para conceder los siguientes permisos:
+ Los usuarios tienen acceso de solo lectura a la mayoría Servicios de AWS, a través de la política **ReadOnlyAccess** AWS administrada.
+ Los usuarios tienen acceso a los casos de soporte abiertos a través de la política de **AWSSupportacceso** AWS gestionado.
+ Los usuarios tienen acceso de solo lectura al panel de control de la AWS Billing consola, a través de la política **AWSBillingReadOnlyAccess** AWS gestionada.
+ Los usuarios pueden aprovisionar productos desde Service Catalog mediante la política **AWSServiceCatalogEndUserFullAccess** AWS gestionada.
+ Los usuarios pueden validar y estimar el costo de cualquier CloudFormation plantilla mediante la política en línea.
+ **Al utilizar la función de **CloudFormationRole**IAM, los usuarios pueden crear, actualizar o eliminar cualquier CloudFormation pila que comience por app/.**
+ **Los usuarios pueden utilizar CloudFormation para crear, actualizar o eliminar funciones de IAM que comiencen por app/.** La política **PermissionsBoundary**de IAM impide que los usuarios aumenten sus privilegios.
+ Los usuarios solo pueden aprovisionar recursos de Amazon AWS Lambda EventBridge CloudWatch, Amazon, Amazon Simple Storage Service (Amazon S3) y Amazon API Gateway utilizando. CloudFormation

En la siguiente imagen, se muestra cómo un usuario autorizado, como un desarrollador, puede crear un nuevo rol de IAM en una cuenta miembro mediante los conjuntos de permisos, los roles de IAM y los límites de permisos que se describen en esta guía:

1. El usuario se autentica en el Centro de Identidad de IAM y asume la función de **DeveloperAccess**IAM.

1. El usuario inicia la `cloudformation:CreateStack` acción y asume la función de IAM. **CloudFormationRole**

1. El usuario inicia la `iam:CreateRole` acción y la utiliza CloudFormation para crear una nueva función de IAM.

1. La política **PermissionsBoundary**de IAM se aplica al nuevo rol de IAM.



![\[Creación de un rol de IAM por parte del usuario que está sujeto al límite de permisos de la cuenta miembro\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/transitioning-to-multiple-aws-accounts/images/2_create-iam-role.png)


El **CloudFormationRole**rol tiene asociada la política [AdministratorAccess](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)gestionada, pero debido a la política de **PermissionsBoundary**IAM, los permisos efectivos del **CloudFormationRole**rol pasan a ser iguales a los de la política. **PermissionsBoundary** La **PermissionsBoundary**política hace referencia a sí misma al permitir la `iam:CreateRole` acción, lo que garantiza que los roles solo se puedan crear si se aplica el límite de permisos.

# Administración de los permisos de los individuos
<a name="managing-permissions-for-individuals"></a>

Al utilizar los conjuntos de permisos, el límite de los permisos y la función de **CloudFormationRole**IAM, puede limitar la cantidad de permisos que debe asignar directamente a los directores individuales. Esto lo ayuda a administrar el acceso a medida que la empresa crece y a aplicar las prácticas de seguridad recomendadas de conceder privilegios mínimos.

También puedes usar *roles vinculados a servicio*, que otorgan permisos a un servicio de AWS para aprovisionar recursos en su nombre. En lugar de conceder permisos a la entidad principal de IAM (usuario, grupo de usuarios o rol), puede conceder los permisos al servicio. Por ejemplo, la función vinculada al servicio [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)le permite aprovisionar sus propias plantillas, recursos y entornos sin asignar permisos al director de IAM. Para obtener más información, consulte [Servicios de AWS que funcionan con IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) y [Uso de roles vinculados a servicio](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) (documentación de IAM).

Otra práctica recomendada es limitar la cantidad de acceso que tienen los individuos a Consola de administración de AWS. [https://www.terraform.io/](https://www.terraform.io/) Administrar la infraestructura a través de iAC permite realizar un seguimiento de los cambios en los recursos a lo largo del tiempo e introducir mecanismos para la aprobación de los cambios, como las solicitudes de extracción de fondos. GitHub 