[英]Restricted IAM policy for DELETE action on API Gateway Deployment resource
我创建了一个无服务器用户,该用户具有创建和部署 AWS lambda function 以及 API 网关所需的权限。
但是,当我更改一段代码并对其进行serverless deploy
时,会出现错误:
Error:
DELETE_FAILED:... "User: arn:aws:iam::XXXXXXXXXXX:user/serverless is not authorized to perform: apigateway:DELETE on resource: arn:aws:apigateway:us-east-1::/restapis/1zhmt1r45r2/deployments/27gb11 because no identity-based policy allows the apigateway:DELETE action (Service: ApiGateway, Status Code: 403...
现在我可以提前 go 并在 apigateway 资源上添加 DELETE 操作权限。 但是在生产环境中允许删除任何 apigateway 资源的风险太大了。 我想要的是限制此无服务器/编程用户可以删除的内容(仅限其自身创建的 api,或资源名称的前缀)。
我已经创建了只允许无服务器用户创建具有特定前缀的资源的策略,但是由于此错误显示资源arn:aws:apigateway:us-east-1::/restapis/1zhmt1r45r2/deployments/27gb11
正在使用的错误ID ( 1zhmt1r45r2/deployments/27gb11
)。 我想不出一种方法来有效地限制该用户可以删除的内容。
有什么解决方法吗? 我需要非常紧急地解决这个问题。
我不确定您在没有更多详细信息的情况下真正想要实现什么,但是您遇到的错误是告诉您需要授予apigateway:DELETE
权限给您的 lambda function 使用仅限于您的 lambda function 的策略。最简单的方法为此,需要在 SAM 模板中指定它。 通过这种方式,您无需手动流程即可实施 IaC(基础架构即代码),并允许您自动执行重新部署流程并将模板添加到源代码管理。 下面的例子定义了一个 lambda function 需要apigateway:DELETE
权限
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
role/AmazonAPIGatewayPushToCloudWatchLogs"
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
StageName: prod
CreateLedger:
Type: AWS::Serverless::Function
Properties:
FunctionName: CreateLedgerFunction
Handler: QLDB.API.Config.Lambda::QLDB.API.Config.Lambda.Functions.CreateLedger.CreateLedgerFunction::FunctionHandler
Runtime: dotnetcore3.1
Timeout: 30
CodeUri: .
Policies:
- Statement:
- Sid: QLDBCreateLedgerCommandPolicy
Effect: Allow
Action:
- apigateway:DELETE #<----- specify the permissions
Resource: '*'
Events:
CreateLedger:
Type: Api
Properties:
Path: /createLedger
Method: post
RestApiId:
Ref: ApiGatewayApi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.