Salta al contenuto

Come posso collegare una policy gestita IAM a un ruolo IAM in AWS CloudFormation?

5 minuti di lettura
0

Desidero aggiungere una policy gestita AWS Identity and Access Management (AWS IAM) esistente o nuova a un ruolo IAM esistente o nuovo in AWS CloudFormation.

Breve descrizione

Per aggiungere una policy gestita IAM esistente o nuova a una risorsa nuovo ruolo IAM, utilizza la proprietà ManagedPolicyArns del tipo di risorsa AWS::IAM::Role. Per aggiungere una nuova policy gestita IAM a una risorsa ruolo IAM esistente, utilizza la proprietà Roles del tipo di risorsa AWS::IAM::ManagedPolicy.

La policy gestita IAM può essere una policy gestita da AWS o una policy gestita dal cliente.

Importante: puoi collegare un massimo di 20 policy gestite a un ruolo o a un utente IAM. La dimensione di ogni policy gestita non può superare i 6.144 caratteri. IAM non conta gli spazi bianchi nel calcolo della dimensione di una policy rispetto a questo limite. Per ulteriori informazioni, consulta IAM e quote AWS STS.

Completa la procedura indicata in una delle seguenti sezioni in base allo scenario applicabile:

  • Aggiungi una policy gestita IAM esistente a un nuovo ruolo IAM
  • Aggiungi una nuova policy gestita IAM a un nuovo ruolo IAM
  • Aggiungi una nuova policy gestita IAM a un ruolo IAM esistente

Risoluzione

Aggiungi una policy gestita IAM esistente a un nuovo ruolo IAM

Completa i seguenti passaggi:

  1. Nel modello AWS CloudFormation, crea uno o più parametri che puoi passare nel nome della risorsa Amazon (ARN) della policy gestita IAM. Guarda i seguenti esempi JSON e YAML.

    JSON:

    {
      "AWSTemplateFormatVersion": "2010-09-09",
      "Parameters": {
        "awsExampleManagedPolicyParameterOne": {
          "Type": "String",
          "Description": "ARN of the first IAM Managed Policy to add to the role"
        },
        "awsExampleManagedPolicyParameterTwo": {
          "Type": "String",
          "Description": "ARN of the second IAM Managed Policy to add to the role"
        }
      }
    }

    YAML:

    Parameters:
      awsExampleManagedPolicyParameterOne:
        Type: String
        Description: 'ARN of the first IAM Managed Policy to add to the role'
      awsExampleManagedPolicyParameterTwo:
        Type: String
        Description: 'ARN of the second IAM Managed Policy to add to the role'
  2. Nella sezioneRisorse del modello, imposta Ref sui parametri creati al passaggio 1 per il tipo di risorsa AWS::IAM::Role. In questo esempio, i parametri sono awsExampleManagedPolicyParameterOne e awsExampleManagedPolicyParameterTwo. Guarda i seguenti esempi JSON e YAML.

    JSON:

    {
      "Resources": {
        "RootRole": {
          "Type": "AWS::IAM::Role",
          "Properties": {
            "AssumeRolePolicyDocument": {
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Effect": "Allow",
                  "Principal": {
                    "Service": [
                      "ec2.amazonaws.com"
                    ]
                  },
                  "Action": [
                    "sts:AssumeRole"
                  ]
                }
              ]
            },
            "Path": "/",
            "ManagedPolicyArns": [
              {
                "Ref": "awsExampleManagedPolicyParameterOne"
              },
              {
                "Ref": "awsExampleManagedPolicyParameterTwo"
              }
            ]
          }
        }
      }
    }

    YAML:

    Resources:
      RootRole:
        Type: 'AWS::IAM::Role'
        Properties:
          AssumeRolePolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Principal:
                  Service:
                    - ec2.amazonaws.com
                Action:
                  - 'sts:AssumeRole'
          Path: /
          ManagedPolicyArns:
            - !Ref awsExampleManagedPolicyParameterOne
            - !Ref awsExampleManagedPolicyParameterTwo
  3. Per applicare la policy gestita IAM esistente al nuovo ruolo IAM, crea o aggiorna lo stack con il modello CloudFormation modificato.

Aggiungi una nuova policy gestita IAM a un nuovo ruolo IAM

Completa i seguenti passaggi:

  1. Nel modello AWS CloudFormation, crea una nuova policy utilizzando la risorsa AWS::IAM::ManagedPolicy. Guarda i seguenti esempi JSON e YAML.

    JSON:

    {
      "SampleManagedPolicy": {
        "Type": "AWS::IAM::ManagedPolicy",
        "Properties": {
          "PolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
              {
                "Sid": "AllowAllUsersToListAccounts",
                "Effect": "Allow",
                "Action": [
                  "iam:ListAccountAliases",
                  "iam:ListUsers",
                  "iam:GetAccountSummary"
                ],
                "Resource": "*"
              }
            ]
          }
        }
      }
    }

    YAML:

    SampleManagedPolicy:
        Type: AWS::IAM::ManagedPolicy
        Properties:
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              -
                Sid: AllowAllUsersToListAccounts
                Effect: Allow
                Action:
                  - iam:ListAccountAliases
                  - iam:ListUsers
                  - iam:GetAccountSummary
                Resource: "*"
  2. Utilizza la sintassi !Ref dell'ID logico per associare la risorsa policy gestita IAM alla risorsa AWS::IAM::Role.

    Per esempio, imposta Ref sull'ID logico della risorsa creata al passaggio 1 (SampleManagedPolicy). Guarda i seguenti esempi JSON e YAML.

    JSON:

    {
      "RootRole": {
        "Type": "AWS::IAM::Role",
        "Properties": {
          "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
              {
                "Effect": "Allow",
                "Principal": {
                  "Service": [
                    "ec2.amazonaws.com"
                  ]
                },
                "Action": [
                  "sts:AssumeRole"
                ]
              }
            ]
          },
          "Path": "/",
          "ManagedPolicyArns": [
            {
              "Ref": "SampleManagedPolicy"
            }
          ]
        }
      }
    }

    YAML:

    RootRole:
        Type: 'AWS::IAM::Role'
        Properties:
          AssumeRolePolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Principal:
                  Service:
                    - ec2.amazonaws.com
                Action:
                  - 'sts:AssumeRole'
          Path: /
          ManagedPolicyArns:
            - !Ref SampleManagedPolicy
  3. Per applicare la nuova policy gestita IAM al nuovo ruolo IAM, crea o aggiorna lo stack con il modello CloudFormation modificato.

Aggiungi una nuova policy gestita IAM a un ruolo IAM esistente

Completa i seguenti passaggi:

  1. Nel modello AWS CloudFormation, crea un parametro che puoi utilizzare per passare il nome dei ruoli esistenti. Guarda i seguenti esempi JSON e YAML.

    JSON:

    {
      "Parameters": {
        "awsExampleRolesParameter": {
          "Type": "CommaDelimitedList",
          "Description": "Names of existing Roles you want to add to the newly created Managed Policy"
        }
      }
    }

    YAML:

    Parameters:
      awsExampleRolesParameter:
        Type: CommaDelimitedList
        Description: Names of existing Roles you want to add to the newly created Managed Policy
  2. Nella sezioneRisorse del modello, imposta Ref sul parametro creato al passaggio 1 (awsExampleRolesParameter) per il tipo di risorsa AWS::IAM::ManagedPolicy. Guarda i seguenti esempi JSON e YAML.

    JSON:

    {
      "Resources": {
        "SampleManagedPolicy": {
          "Type": "AWS::IAM::ManagedPolicy",
          "Properties": {
            "PolicyDocument": {
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Sid": "AllowAllUsersToListAccounts",
                  "Effect": "Allow",
                  "Action": [
                    "iam:ListAccountAliases",
                    "iam:ListUsers",
                    "iam:GetAccountSummary"
                  ],
                  "Resource": "*"
                }
              ]
            },
            "Roles": {
              "Ref": "awsExampleRolesParameter"
            }
          }
        }
      }
    }

    YAML:

    Resources:
      SampleManagedPolicy:
        Type: AWS::IAM::ManagedPolicy
        Properties:
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Sid: AllowAllUsersToListAccounts
                Effect: Allow
                Action:
                  - iam:ListAccountAliases
                  - iam:ListUsers
                  - iam:GetAccountSummary
                Resource: '*'
          Roles: !Ref awsExampleRolesParameter
  3. Per applicare la nuova policy gestita IAM al ruolo IAM esistente, crea o aggiorna lo stack con il modello CloudFormation modificato.

AWS UFFICIALEAggiornata 2 anni fa