Berechtigungen - AWS Serverless Application Model

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Berechtigungen

So steuern Sie den Zugriff aufAWSressourcen,AWS SAMverwendet die gleichen Mechanismen wieAWS CloudFormationaus. Weitere Informationen finden Sie unterZugriffssteuerung mitAWS Identity and Access ManagementimAWS CloudFormation-Benutzerhandbuchaus.

Es gibt drei Hauptoptionen, um einem Benutzer die Berechtigung zur Verwaltung serverloser Anwendungen zu erteilen. Jede Option bietet Benutzern unterschiedliche Zugriffskontrollstufen.

  • Gewähren Sie Administratorrechte.

  • Anhängen notwendigAWSVerwaltete Richtlinien.

  • Grant spezifischAWS Identity and Access Management(IAM) Berechtigungen.

Je nachdem, welche Option Sie wählen, können Benutzer nur serverlose Anwendungen verwalten, dieAWSRessourcen, auf die sie zugreifen können.

In den folgenden Abschnitten wird jede Option ausführlich beschrieben.

Administratorberechtigungen erteilen

Wenn Sie einem Benutzer Administratorberechtigungen erteilen, kann er serverlose Anwendungen verwalten, die eine beliebige Kombination vonAWSRessourcen schätzen. Dies ist die einfachste Option, gewährt Benutzern jedoch auch die breitesten Berechtigungen, wodurch sie Aktionen mit der höchsten Wirkung ausführen können.

Weitere Informationen zum Erteilen von Administratorberechtigungen für einen Benutzer finden Sie unterErstellen Ihres ersten Administratorbenutzers und Ihrer ersten AdministratorgruppeimIAM User Guideaus.

Anhängen notwendigAWSVerwaltete Richtlinien

Sie können Benutzern eine Teilmenge von Berechtigungen erteilen, indem SieAWSVerwaltete Richtlinien, anstatt vollständige Administratorberechtigungen zu erteilen. Wenn Sie diese Option verwenden, stellen Sie sicher, dass der Satz vonAWSverwaltete Richtlinien decken alle Aktionen und Ressourcen ab, die für die serverlosen Anwendungen erforderlich sind, die die Benutzer verwalten.

BeispielsweiseAWSverwaltete Richtlinien reichen aus, umStellen Sie die Hello World Beispielanwendung bereit:

  • AWSCloudFormationFullAccess

  • IAMFullAccess

  • AWSLambda_FullAccess

  • AmazonAPIGatewayAdministrator

  • AmazonS3FullAccess

  • AmazonEC2ContainerRegistryFullAccess

Weitere Informationen zum Anfügen von Richtlinien an einen IAM-Benutzer finden Sie unterÄndern von Berechtigungen für einen IAM-BenutzerimIAM User Guideaus.

Gewähren Sie bestimmte IAM-Berechtigungen

Für die genaueste Ebene der Zugriffssteuerung können Sie Benutzern bestimmte IAM-Berechtigungen erteilen, dieRichtlinienaussagenaus. Wenn Sie diese Option verwenden, stellen Sie sicher, dass die Richtlinienanweisung alle Aktionen und Ressourcen enthält, die für die serverlosen Anwendungen erforderlich sind, die von den Benutzern verwaltet werden.

Bei dieser Option empfiehlt es sich, Benutzern die Berechtigung zum Erstellen von Rollen zu verweigern, einschließlich Lambda-Ausführungsrollen, damit sie sich keine eskalierten Berechtigungen erteilen können. Sie als Administrator müssen also zuerst eine erstellenLambda-Ausführungsrolledas wird in den serverlosen Anwendungen angegeben, die Benutzer verwalten. Weitere Informationen zum Erstellen von Lambda-Ausführungsrollen finden Sie unterErstellen einer Ausführungsrolle in der IAM-Konsoleaus.

Für denBeispielanwendungdieAWSLambdaBasicExecutionRolereicht aus, um die Anwendung auszuführen. Nachdem Sie eine Lambda-Ausführungsrolle erstellt haben, ändern Sie dieAWS SAMVorlagendatei der Hello World-Beispielanwendung, um die folgende Eigenschaft zurAWS::Serverless::Functionressource:

Role: lambda-execution-role-arn

Wenn die geänderte Hello World-Anwendung vorhanden ist, gewährt die folgende Richtlinienerklärung den Benutzern ausreichende Berechtigungen zum Bereitstellen, Aktualisieren und Löschen der Anwendung:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudFormationTemplate", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet" ], "Resource": [ "arn:aws:cloudformation:*:aws:transform/Serverless-2016-10-31" ] }, { "Sid": "CloudFormationStack", "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStacks", "cloudformation:ExecuteChangeSet", "cloudformation:GetTemplateSummary", "cloudformation:ListStackResources", "cloudformation:UpdateStack" ], "Resource": [ "arn:aws:cloudformation:*:111122223333:stack/*" ] }, { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/*" ] }, { "Sid": "ECRRepository", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:CompleteLayerUpload", "ecr:CreateRepository", "ecr:DeleteRepository", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetDownloadUrlForLayer", "ecr:GetRepositoryPolicy", "ecr:InitiateLayerUpload", "ecr:ListImages", "ecr:PutImage", "ecr:SetRepositoryPolicy", "ecr:UploadLayerPart" ], "Resource": [ "arn:aws:ecr:*:111122223333:repository/*" ] }, { "Sid": "ECRAuthToken", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": [ "*" ] }, { "Sid": "Lambda", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:ListTags", "lambda:RemovePermission", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:*:111122223333:function:*" ] }, { "Sid": "IAM", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DetachRolePolicy", "iam:GetRole", "iam:TagRole" ], "Resource": [ "arn:aws:iam::111122223333:role/*" ] }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "lambda.amazonaws.com" } } }, { "Sid": "APIGateway", "Effect": "Allow", "Action": [ "apigateway:DELETE", "apigateway:GET", "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:*::*" ] } ] }
Anmerkung

Die Beispielrichtlinienanweisung in diesem Abschnitt gewährt ausreichend Berechtigung zum Bereitstellen, Aktualisieren und Löschen desBeispielanwendungaus. Wenn Sie Ihrer Anwendung zusätzliche Ressourcentypen hinzufügen, müssen Sie die Richtlinienanweisung so aktualisieren, dass sie Folgendes enthält:

  1. Berechtigung für Ihre Anwendung, die Aktionen des Dienstes aufzurufen.

  2. Der Dienstprinzipal, falls erforderlich für die Aktionen des Dienstes.

Wenn Sie beispielsweise einen Workflow für Step Functions hinzufügen, müssen Sie möglicherweise Berechtigungen für aufgelistete Aktionen hinzufügenhier, und dasstates.amazonaws.comService-Prinzipal.

Weitere Informationen zu IAM-Richtlinien finden Sie unterVerwalten von IAM-RichtlinienimIAM User Guideaus.