为 配置代码签名Amazon SAMapplications - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

为 配置代码签名Amazon SAMapplications

您可以使用Amazon SAM以启用无服务器应用程序的代码签名,以帮助确保只部署受信任的代码。有关代码签名功能的更多信息,请参阅为 Lambda 函数配置代码签名中的Amazon Lambda开发人员指南.

必须使用创建签名配置文件,然后才能为无服务器应用程序配置代码签名。Amazon签署人。您可以将此签名配置文件用于以下任务:

  1. 创建代码签名配置— 声明AWS::Lambda::CodeSigningConfig资源,以指定受信任发布者的签名配置文件以及为验证检查设置策略操作。你可以在同一个中声明这个对象Amazon SAM模板作为你的无服务器功能,在不同的Amazon SAM模板,或者在Amazon CloudFormation。模板。然后,您可以通过指定CodeSigningConfigArn属性与 Amazon 资源名称 (ARN) 的函数AWS::Lambda::CodeSigningConfig资源。

  2. 为代码签名— 使用sam package或者sam deploy命令使用--signing-profiles选项。

注意

为了成功使用sam package或者sam deploy必须为与这些命令配合使用的 Amazon S3 存储桶启用版本控制。如果您使用的是 Amazon S3 存储桶Amazon SAM为你创建,版本控制将自动启用。有关 Amazon S3 存储桶版本控制的更多信息以及有关在您提供的 Amazon S3 存储桶上启用版本控制的说明,请参阅在 Amazon S3 存储桶中使用版本控制中的Amazon Simple Storage Service 用户指南.

当您部署无服务器应用程序时,Lambda 会对您启用代码签名的所有函数执行验证检查。Lambda 还对这些函数所依赖的任何层执行验证检查。有关 Lambda 验证检查的更多信息,请参阅签名验证中的Amazon Lambda开发人员指南.

Example

创建签名配置文件

要创建签名配置文件,请运行以下命令:

aws signer put-signing-profile --platform-id "AWSLambda-SHA384-ECDSA" --profile-name MySigningProfile

如果上一个命令成功,则会看到签名配置文件的 ARN 返回。例如:

{ "arn": "arn:aws:signer:us-east-1:111122223333:/signing-profiles/MySigningProfile", "profileVersion": "SAMPLEverx", "profileVersionArn": "arn:aws:signer:us-east-1:111122223333:/signing-profiles/MySigningProfile/SAMPLEverx" }

这些区域有:profileVersionArn字段包含创建代码签名配置时要使用的 ARN。

为函数创建代码签名配置并启用代码签名

以下示例Amazon SAM模板声明AWS::Lambda::CodeSigningConfig资源并为 Lambda 函数启用代码签名。在此示例中,有一个受信任的配置文件,如果签名检查失败,则会拒绝部署。

Resources: HelloWorld: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.7 CodeSigningConfigArn: !Ref MySignedFunctionCodeSigningConfig MySignedFunctionCodeSigningConfig: Type: AWS::Lambda::CodeSigningConfig Properties: Description: "Code Signing for MySignedLambdaFunction" AllowedPublishers: SigningProfileVersionArns: - MySigningProfile-profileVersionArn CodeSigningPolicies: UntrustedArtifactOnDeployment: "Enforce"

为代码签名

您可以在打包或部署应用程序时签署代码。指定--signing-profiles选项可以使用sam package或者sam deploy命令,如以下示例命令所示。

打包应用程序时签署函数代码:

sam package --signing-profiles HelloWorld=MySigningProfile --s3-bucket test-bucket --output-template-file packaged.yaml

在打包应用程序时,同时签署函数代码和函数所依赖的层:

sam package --signing-profiles HelloWorld=MySigningProfile MyLayer=MySigningProfile --s3-bucket test-bucket --output-template-file packaged.yaml

签署函数代码和图层,然后执行部署:

sam deploy --signing-profiles HelloWorld=MySigningProfile MyLayer=MySigningProfile --s3-bucket test-bucket --template-file packaged.yaml --stack-name --region us-east-1 --capabilities CAPABILITY_IAM
注意

为了成功使用sam package或者sam deploy必须为与这些命令配合使用的 Amazon S3 存储桶启用版本控制。如果您使用的是 Amazon S3 存储桶Amazon SAM为你创建,版本控制将自动启用。有关 Amazon S3 存储桶版本控制的更多信息以及有关在您提供的 Amazon S3 存储桶上启用版本控制的说明,请参阅在 Amazon S3 存储桶中使用版本控制中的Amazon Simple Storage Service 用户指南.

提供签名配置文件sam deploy --guided

当你运行sam deploy --guided命令配置了代码签名的无服务器应用程序,Amazon SAM提示您提供用于代码签名的签名配置文件。有关 的更多信息sam deploy --guided请参阅提示sam deploy中的Amazon SAMCLI 命令参考。