权限 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

权限

控制对的访问Amazon资源,Amazon SAM使用与Amazon CloudFormation. 有关更多信息,请参阅 。使用 控制访问Amazon Identity and Access Management中的Amazon CloudFormation用户指南.

授予用户管理无服务器应用程序的权限的主要选项有三种。每个选项都为用户提供不同级别的访问控制。

  • 授予管理员权限。

  • 附加必要Amazon托管策略。

  • 特定于授予Amazon Identity and Access Management(IAM) 权限。

根据您选择的选项,用户只能管理包含Amazon他们有权访问的资源。

以下各部分对每个选项进行了详述。

授予管理员权限

如果您向用户授予管理员权限,他们可以管理包含以下任意组合的无服务器应用程序Amazon资源的费用。这是最简单的选择,但它也授予用户最广泛的权限集,因此使他们能够执行影响最大的操作。

有关向用户授予管理员权限的更多信息,请参阅创建您的第一个 IAM 管理员用户和组中的IAM 用户指南.

附加必要Amazon托管策略

您可以使用以下方法授予用户一部分权限Amazon托管策略,而不是授予完全管理员权限。如果使用此选项,请确保Amazon托管策略涵盖用户管理的无服务器应用程序所需的所有操作和资源。

例如,以下内容Amazon托管策略足以部署示例 Hello World

  • AWSCloudFormationFullAccess

  • IAMFullAccess

  • AWSLambda_FullAccess

  • 亚马逊 APIGatewayAdministrator

  • 亚马逊 S3FullAccess

  • AmazonEC2ContainerRegistryFullAccess

有关将策略附到 IAM 用户上的信息,请参阅更改 IAM 用户的权限中的IAM 用户指南.

授予特定的 IAM 权限

对于最精细的访问控制级别,您可以使用以下方法向用户授予特定 IAM 权限策略声明. 如果使用此选项,请确保策略声明包含用户管理的无服务器应用程序所需的所有操作和资源。

使用此选项的最佳做法是拒绝用户创建角色(包括 Lambda 执行角色)的权限,这样他们就无法授予自己升级的权限。因此,作为管理员,你必须首先创建Lambda 执行角色这将在用户将管理的无服务器应用程序中指定。有关创建 Lambda 执行角色的信息,请参阅在 IAM 控制台中创建执行角色.

对于示例 Hello WorldAWSLambdaBasicExecutionRole足以运行该应用程序。创建 Lambda 执行角色后,请修改Amazon SAM示例 Hello World 应用程序的模板文件,用于将以下属性添加到AWS::Serverless::Function资源:

Role: lambda-execution-role-arn

修改后的 Hello World 应用程序就位后,以下策略声明为用户授予部署、更新和删除应用程序的足够权限:

{ "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:*::*" ] } ] }
注意

本节中的示例策略声明授予了足够的权限,以便您部署、更新和删除示例 Hello World. 如果向应用程序添加其他资源类型,则需要更新策略声明以包含以下内容:

  1. 允许您的应用程序调用该服务的操作。

  2. 服务委托人(如果服务的操作需要)。

例如,如果添加 Step Functions 工作流程,则可能需要为列出的操作添加权限这里,以及states.amazonaws.com服务委托人。

有关 IAM 策略的更多信息,请参阅管理 IAM 策略中的IAM 用户指南.