

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Gestione delle autorizzazioni e dell'accesso per un'architettura multi-account
<a name="managing-permissions"></a>

**Topics**
+ [Considerazioni relative alla cultura ingegneristica](engineering-cultural-considerations.md)
+ [Creazione di set di autorizzazioni](creating-permission-sets.md)
+ [Creazione di un limite delle autorizzazioni](creating-a-permissions-boundary.md)
+ [Gestione delle autorizzazioni per i singoli utenti](managing-permissions-for-individuals.md)

# Considerazioni relative alla cultura ingegneristica
<a name="engineering-cultural-considerations"></a>

Uno dei pilastri del AWS Well-Architected Framework è l'eccellenza operativa. I team devono comprendere il [modello operativo](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/operating-model.html) e il loro contributo al raggiungimento dei risultati aziendali. I team possono concentrarsi sul raggiungimento di obiettivi condivisi quando comprendono le proprie responsabilità, possono assumersi la titolarità e sapere come vengono prese le decisioni.

Nelle aziende in fase iniziale che si stanno sviluppando rapidamente, tutti i membri del team svolgono più ruoli. Non è raro che questi utenti abbiano un accesso altamente privilegiato all'intero Account AWS. Man mano che le aziende crescono, spesso vogliono seguire il principio di *privilegio minimo* e concedere solo le autorizzazioni necessarie all'utente per svolgere il proprio lavoro. Per aiutarti a limitare l'ambito, puoi utilizzare [AWS Identity and Access Management Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) per vedere quali autorizzazioni utilizza effettivamente un utente o un ruolo IAM, che consente di rimuovere eventuali autorizzazioni in eccesso.

Può essere difficile decidere chi nella tua azienda dispone delle autorizzazioni per creare ruoli IAM. Si tratta in genere di un vettore per aumentare i privilegi. L'aumento dei privilegi si ha quando un utente può espandere le proprie autorizzazioni o l'ambito di accesso. Ad esempio, se un utente dispone di autorizzazioni limitate ma può creare nuovi ruoli IAM, può aumentare i propri privilegi creando e assumendo un nuovo ruolo IAM con la policy gestita `AdministratorAccess` applicata.

Alcune aziende limitano l'assegnazione dei ruoli IAM a un team centralizzato di persone fidate. L'aspetto negativo di questo approccio è che questo team può rapidamente diventare un ostacolo, perché quasi tutti Servizi AWS richiedono un ruolo IAM per funzionare. In alternativa, puoi usare i [limiti delle autorizzazioni](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) per delegare l'accesso IAM solo agli utenti che stanno sviluppando, testando, lanciando e gestendo l'infrastruttura cloud. Ad esempio, consulta [Example Permission Boundaries](https://github.com/aws-samples/example-permissions-boundary) (). GitHub

I team addetti alle operazioni di sviluppo (DevOps), noti anche come team di *piattaforma*, spesso devono bilanciare le funzionalità self-service di più team di sviluppo interni con la stabilità operativa delle applicazioni. Promuovere una cultura ingegneristica che abbracci l'autonomia, la competenza e lo scopo sul posto di lavoro può aiutare a motivare i team. Gli ingegneri vogliono svolgere il proprio lavoro in modo autonomo, senza che gli altri debbano farle al posto loro. Se DevOps i team sono in grado di implementare soluzioni self-service, ciò riduce anche la quantità di tempo che gli altri dipendono da loro per portare a termine le proprie attività.

# Creazione di set di autorizzazioni
<a name="creating-permission-sets"></a>

È possibile gestire Account AWS l'accesso utilizzando i [set di autorizzazioni](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) in AWS IAM Identity Center. Un *set di autorizzazioni* è un modello che consente di implementare una o più policy IAM su più Account AWS. Quando si assegna un set di autorizzazioni a un Account AWS, il Centro identità IAM crea un ruolo IAM e associa le policy IAM a quel ruolo. Per ulteriori informazioni, consulta la sezione [Creazione e gestione dei set di autorizzazioni](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsets.html) (documentazione di Centro identità IAM).

AWS consiglia di creare set di autorizzazioni che corrispondano ai diversi personaggi dell'azienda.

**Topics**
+ [Set di autorizzazioni di fatturazione](#billing-permission-set)
+ [Set di autorizzazioni per sviluppatori](#developer-permission-set)
+ [Set di autorizzazioni di produzione](#production-permission-set)

I seguenti set di autorizzazioni sono frammenti di un modello. AWS CloudFormation È necessario utilizzare questo codice come punto di partenza e personalizzarlo per la propria attività. Per ulteriori informazioni sui CloudFormation modelli, consulta [Learn template basics](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html) (documentazione). CloudFormation 

## Set di autorizzazioni di fatturazione
<a name="billing-permission-set"></a>

Il team finanziario lo utilizza **BillingAccessPermissionSet**per visualizzare la dashboard della AWS Billing console e AWS Cost Explorer in ogni account.

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

## Set di autorizzazioni per sviluppatori
<a name="developer-permission-set"></a>

Il team di progettazione lo utilizza **DeveloperAccessPermissionSet**per accedere agli account non di produzione.

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

## Set di autorizzazioni di produzione
<a name="production-permission-set"></a>

Il team di progettazione lo utilizza **ProductionPermissionSet**per accedere agli account di produzione. Questo set di autorizzazioni ha un accesso limitato e di sola visualizzazione.

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

# Creazione di un limite delle autorizzazioni
<a name="creating-a-permissions-boundary"></a>

Dopo aver distribuito i set di autorizzazioni, si stabilisce un limite delle autorizzazioni. Questo *limite delle autorizzazioni* è un meccanismo per delegare l'accesso IAM solo agli utenti che stanno sviluppando, testando, lanciando e gestendo l'infrastruttura cloud. Questi utenti possono eseguire solo le azioni consentite dalla policy e dal limite delle autorizzazioni.

È possibile definire il limite delle autorizzazioni in un AWS CloudFormation modello e quindi CloudFormation StackSets utilizzarlo per distribuire il modello in più account. Questo ti aiuta a stabilire e mantenere policy standardizzate in tutta l'organizzazione con un'unica operazione. Per ulteriori informazioni e istruzioni, vedete [Lavorare con AWS CloudFormation StackSets (documentazione](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html))CloudFormation .

Il seguente CloudFormation modello prevede un ruolo IAM e crea una policy IAM che funge da limite di autorizzazione. Utilizzando un set di stack, puoi implementare questo modello a tutti gli account membri della tua organizzazione.

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

Il **CloudFormationRole**ruolo, la **PermissionsBoundary**policy e il set di **DeveloperAccess**autorizzazioni collaborano per concedere le seguenti autorizzazioni:
+ Gli utenti hanno accesso in sola lettura alla maggior parte degli utenti Servizi AWS, tramite la **ReadOnlyAccess** AWS policy gestita.
+ Gli utenti hanno accesso ai casi di supporto aperti, tramite la policy AWS gestita di **AWSSupportaccesso**.
+ Gli utenti hanno accesso in sola lettura alla dashboard della AWS Billing console, tramite la policy **AWSBillingReadOnlyAccess** AWS gestita.
+ Gli utenti possono fornire prodotti da Service Catalog, tramite la policy **AWSServiceCatalogEndUserFullAccess** AWS gestita.
+ Gli utenti sono in grado di convalidare e stimare il costo di qualsiasi CloudFormation modello, tramite la politica in linea.
+ **Utilizzando il ruolo **CloudFormationRole**IAM, gli utenti possono creare, aggiornare o eliminare qualsiasi CloudFormation stack che inizia con app/.**
+ **Gli utenti possono utilizzare per CloudFormation creare, aggiornare o eliminare i ruoli IAM che iniziano con app/.** La policy **PermissionsBoundary**IAM impedisce agli utenti di aumentare i propri privilegi.
+ Gli utenti possono effettuare il provisioning di risorse Amazon AWS Lambda EventBridge CloudWatch, Amazon, Amazon Simple Storage Service (Amazon S3) e Amazon API Gateway solo utilizzando. CloudFormation

L'immagine seguente mostra come un utente autorizzato, ad esempio uno sviluppatore, può creare un nuovo ruolo IAM in un account membro utilizzando i set di autorizzazioni, i ruoli IAM e i limiti delle autorizzazioni descritti in questa guida:

1. L'utente si autentica in IAM Identity Center e assume il ruolo IAM. **DeveloperAccess**

1. L'utente avvia l'`cloudformation:CreateStack`azione e assume il ruolo IAM. **CloudFormationRole**

1. L'utente avvia l'`iam:CreateRole`azione e la utilizza CloudFormation per creare un nuovo ruolo IAM.

1. La policy **PermissionsBoundary**IAM viene applicata al nuovo ruolo IAM.



![\[Utente che crea un ruolo IAM soggetto al limite delle autorizzazioni nell'account membro\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/transitioning-to-multiple-aws-accounts/images/2_create-iam-role.png)


Al **CloudFormationRole**ruolo è associata la policy [AdministratorAccess](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)gestita, ma grazie alla policy **PermissionsBoundary**IAM, le autorizzazioni effettive del **CloudFormationRole**ruolo diventano uguali alla **PermissionsBoundary**policy. La **PermissionsBoundary**policy fa riferimento a se stessa quando consente l'`iam:CreateRole`azione, il che garantisce che i ruoli possano essere creati solo se viene applicato il limite delle autorizzazioni.

# Gestione delle autorizzazioni per i singoli utenti
<a name="managing-permissions-for-individuals"></a>

Utilizzando i set di autorizzazioni, il limite delle autorizzazioni e il ruolo **CloudFormationRole**IAM, puoi limitare la quantità di autorizzazioni che devi assegnare direttamente ai singoli responsabili. In questo modo puoi gestire l'accesso man mano che l'azienda cresce e applicare le best practice di sicurezza di concessione del privilegio minimo.

Puoi anche usare *ruoli collegati ai servizi*, che concedono le autorizzazioni a un servizio AWS di eseguire il provisioning delle risorse per tuo conto. Invece di concedere le autorizzazioni al principale IAM (utente, gruppo di utenti o ruolo), puoi concedere le autorizzazioni al servizio. Ad esempio, il ruolo collegato al servizio per ti [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)consente di fornire modelli, risorse e ambienti personalizzati, senza assegnare autorizzazioni al responsabile IAM. Per ulteriori informazioni, consulta la sezione [Servizi AWS che funzionano con IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) e [Utilizzo di ruoli collegati ai servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) (documentazione IAM).

Un'altra best practice consiste nel limitare la quantità di accesso degli individui alla Console di gestione AWS. [https://www.terraform.io/](https://www.terraform.io/) Gestendo l'infrastruttura tramite IAc è possibile tenere traccia delle modifiche alle risorse nel tempo e introdurre meccanismi per l'approvazione delle modifiche, come le pull request. GitHub 