Direkt zum Inhalt

Wie kann ich eine von IAM verwaltete Richtlinie an eine IAM-Rolle in 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, verwende die Eigenschaft ManagedPolicyArns des Ressourcentyps AWS::IAM::Role. Um einer vorhandenen IAM-Rollenressource eine neue von IAM verwaltete Richtlinie hinzuzufügen, verwende die Eigenschaft Rollen des Ressourcentyps AWS::IAM::ManagedPolicy.

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

Wichtig: Du kannst einer IAM-Rolle oder einem IAM-Benutzer maximal 20 verwaltete Richtlinien zuordnen. Die Größe jeder verwalteten Richtlinie darf 6144 Zeichen nicht überschreiten. IAM berücksichtigt Leerzeichen nicht, wenn die Größe einer Richtlinie anhand dieses Grenzwerts berechnet wird. Weitere Informationen findest du unter IAM- und STS-Kontingente.

Führe auf der Grundlage deines 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
  • Eine neue von IAM verwaltete Richtlinie zu einer vorhandenen IAM-Rolle hinzufügen

Lösung

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

Führe die folgenden Schritte aus:

  1. Erstelle in deiner AWS CloudFormation-Vorlage einen oder mehrere Parameter, die du an den Amazon-Ressourcennamen (ARN) deiner von IAM verwalteten Richtlinie übergeben kannst. Sieh dir 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'
  2. Stelle im Abschnitt Ressourcen deiner Vorlage für die Ressource vom Typ AWS::IAM::Role Ref auf die Parameter ein, die du in Schritt 1 erstellt hast. In diesem Beispiel sind dies die Parameter awsExampleManagedPolicyParameterOne und awsExampleManagedPolicyParameterTwo. Sieh dir 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
  3. Um deine bestehende von IAM verwaltete Richtlinie auf deine neue IAM-Rolle anzuwenden, erstelle oder aktualisiere den Stack mit deiner geänderten CloudFormation-Vorlage.

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

Führe die folgenden Schritte aus:

  1. Erstelle in deiner AWS CloudFormation-Vorlage mithilfe der Ressource AWS::IAM::ManagedPolicy eine neue Richtlinie. Sieh dir 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. Benutze die logische ID-Syntax !Ref, um die von IAM verwaltete Richtlinien-Ressource an die AWS::IAM::Role-Ressource anzuhängen.

    Stelle beispielsweise Ref auf die logische ID der Ressource ein, die du in Schritt 1 erstellt hast (SampleManagedPolicy). Sieh dir 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
  3. Um deine neue von IAM verwaltete Richtlinie auf deine neue IAM-Rolle anzuwenden, erstelle oder aktualisiere den Stack mit deiner geänderten CloudFormation-Vorlage.

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

Führe die folgenden Schritte aus:

  1. Erstelle in deiner AWS CloudFormation-Vorlage einen Parameter, mit dem du den Namen deiner vorhandenen Rollen übergeben kannst. Sieh dir 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. Stelle Ref im Abschnitt Ressourcen deiner Vorlage auf den Parameter ein, den du in Schritt 1 (awsExampleRolesParameter) im Ressourcentyp AWS::IAM::ManagedPolicy erstellt hast. Sieh dir 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
  3. Um deine neue von IAM verwaltete Richtlinie auf deine bestehende IAM-Rolle anzuwenden, erstelle oder aktualisiere den Stack mit deiner geänderten CloudFormation-Vorlage.

AWS OFFICIALAktualisiert vor 2 Jahren