Wie kann ich eine von IAM verwaltete Richtlinie an eine IAM-Rolle in AWS CloudFormation anhängen?

Lesedauer: 5 Minute
0

Ich möchte eine bestehende oder neue von AWS Identity and Access Management (IAM) verwaltete Richtlinie zu einer neuen oder bestehenden IAM-Rolle in AWS CloudFormation hinzufügen.

Kurzbeschreibung

Um einer neuen IAM-Rollenressource eine vorhandene oder neue von IAM verwaltete Richtlinie hinzuzufügen, verwenden Sie die Eigenschaft ManagedPolicyArns des Ressourcentyps AWS::IAM::Role. Um einer vorhandenen IAM-Rollenressource eine neue von IAM verwaltete Richtlinie hinzuzufügen, verwenden Sie die Eigenschaft Roles des Ressourcentyps AWS::IAM::ManagedPolicy.

Ihre von IAM verwaltete Richtlinie kann eine von AWS verwaltete Richtlinie oder eine vom Kunden verwaltete Richtlinie sein.

**Wichtig:**Sie können einer IAM-Rolle oder einem IAM-Benutzer maximal 10 verwaltete Richtlinien zuordnen. Die Größe jeder verwalteten Richtlinie darf 6.144 Zeichen nicht überschreiten. Weitere Informationen finden Sie unter IAM- und STS-Kontingente.

Führen Sie auf der Grundlage Ihres Szenarios die Schritte in einem der folgenden Abschnitte aus:

  • Eine vorhandene von IAM verwaltete Richtlinie zu einer neuen IAM-Rolle hinzufügen
  • Eine neue von IAM verwaltete Richtlinie zu einer neuen IAM-Rolle hinzufügen
  • Fügen Sie einer vorhandenen IAM-Rolle eine neue von IAM verwaltete Policy hinzu

Behebung

Eine vorhandene von IAM verwaltete Richtlinie zu einer neuen IAM-Rolle hinzufügen

1.Erstellen Sie in Ihrer AWS CloudFormation-Vorlage einen oder mehrere Parameter, die Sie verwenden können, um den Amazon-Ressourcennamen (ARN) Ihrer von IAM verwalteten Richtlinie zu übergeben. Sehen Sie sich die folgenden JSON- und YAML-Beispiele an:

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'
  1. Stellen Sie im Abschnitt Ressourcen Ihrer Vorlage für die Ressource vom Typ AWS::IAM::Role Ref auf die Parameter ein, die Sie in Schritt 1 erstellt haben. In diesem Beispiel sind dies die Parameter awsExampleManagedPolicyParameterOne und awsExampleManagedPolicyParameterTwo. Sehen Sie sich die folgenden JSON- und YAML-Beispiele an:

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
  1. Um Ihre bestehende von IAM verwaltete Richtlinie auf Ihre neue IAM-Rolle anzuwenden, erstellen Sie einen Stack oder aktualisieren Sie einen vorhandenen Stack auf der Grundlage Ihrer modifizierten AWS CloudFormation-Vorlage.

Eine neue von IAM verwaltete Richtlinie zu einer neuen IAM-Rolle hinzufügen

  1. Erstellen Sie in Ihrer AWS CloudFormation-Vorlage mithilfe der Ressource AWS::IAM::ManagedPolicy eine neue Richtlinie. Sehen Sie sich die folgenden JSON- und YAML-Beispiele an:

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.Benutzen Sie die logische ID-Syntax !Ref, um die von IAM verwaltete Policy-Ressource an die AWS::IAM::Role-Ressource anzuhängen.

Stellen Sie beispielsweise Ref auf die logische ID der Ressource ein, die Sie in Schritt 1 erstellt haben (SampleManagedPolicy). Sehen Sie sich die folgenden JSON- und YAML-Beispiele an:

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
  1. Um Ihre neue von IAM verwaltete Richtlinie auf Ihre neue IAM-Rolle anzuwenden, erstellen Sie einen Stack oder aktualisieren Sie einen vorhandenen Stack auf der Grundlage Ihrer modifizierten AWS CloudFormation-Vorlage.

Fügen Sie einer vorhandenen IAM-Rolle eine neue von IAM verwaltete Policy hinzu

  1. Erstellen Sie in Ihrer AWS CloudFormation-Vorlage einen Parameter, mit dem Sie den Namen Ihrer vorhandenen Rollen übergeben können. Sehen Sie sich die folgenden JSON- und YAML-Beispiele an:

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.Stellen Sie im Abschnitt Ressourcen Ihrer Vorlage für die Ressource vom Typ AWS::IAM::ManagedPolicy Ref auf den Parameter ein, den Sie in Schritt 1 erstellt haben (awsExampleRolesParameter). Sehen Sie sich die folgenden JSON- und YAML-Beispiele an:

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
  1. Um Ihre neue von IAM verwaltete Richtlinie auf Ihre bestehende IAM-Rolle anzuwenden, erstellen Sie einen Stack oder aktualisieren Sie einen vorhandenen Stack auf der Grundlage Ihrer modifizierten AWS CloudFormation-Vorlage.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren