【发布时间】:2019-12-21 12:19:29
【问题描述】:
以下是使用 SAM 模板为 lambda 函数(AWS::Serverless::Function) 创建的自定义执行角色(some-role-serv-LogicalID-GDGGGGGBMW2):
{
"permissionsBoundary": {
"permissionsBoundaryArn": "arn:aws:iam::111222333444:policy/some-permission-boundary",
"permissionsBoundaryType": "Policy"
},
"roleName": “some-role-serv-LogicalID-GDGGGGGBMW2”,
"policies": [
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sqs:*",
"Resource": "arn:aws:sqs:us-east-1:111222333444:someq*",
"Effect": "Allow"
},
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:us-east-1:111222333444:log-group:*",
"Effect": "Allow"
}
]
},
"name": "lambda-policy",
"type": "inline"
}
],
"trustedEntities": [
"lambda.amazonaws.com"
]
}
some-permission-boundary 在哪里:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-east-1:111222333444:log-group:*"
],
"Effect": "Allow",
},
{
"Action": [
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:ListDeadLetterSourceQueues",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl"
],
"Resource": [
"arn:aws:sqs:us-east-1:111222333444:someq*"
],
"Effect": "Allow",
}
]
}
some-role-serv-LogicalID-GDGGGGGBMW2 在 SAM 模板中被分配了一个权限边界(some-permission-boundary)
Lambda 函数使用以下 SAM 模板语法代入自定义角色:
Role: !GetAtt LogicalID.Arn
在部署中,
lambda 是从 EC2 中的 docker 容器创建的(使用 sam deploy),
EC2 承担的附加角色策略(如下)在哪里:
{
"Condition": {
"StringEquals": {
"iam:PermissionsBoundary": "arn:aws:iam::111222333444:policy/some-permission-boundary"
}
},
"Action": [
"iam:CreateRole",
"iam:AttachRolePolicy",
"iam:PutRolePolicy",
"iam:DetachRolePolicy",
"iam:GetRolePolicy"
],
"Resource": [
"arn:aws:iam::111222333444:role/some-role*"
],
"Effect": "Allow"
}
此 EC2 策略应确保没有以下属性的任何自定义角色(例如 some-role-serv-LogicalID-GDGGGGGBMW2):
PermissionsBoundary: !Sub "arn:aws:iam::${AWS::AccountId}:policy/some-permission-boundary"
不应允许创建角色some-role-serv-LogicalID-GDGGGGGBMW2
创建堆栈时出现以下错误:
堆栈创建成功,但是,
1)
为什么sam deploy 命令会出现这个错误?
2)
EC2 策略是否不允许在没有权限边界 (some-permission-boundary) 的情况下创建自定义角色 (some-role-serv-LogicalID-GDGGGGGBMW2)?果然……
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-iam aws-sam