AWS IAM 角色策略资源限制
AWS IAM Role Policy Resource Restriction
我对 AWS 比较陌生,正在尝试了解角色策略的工作原理。我已经阅读了非常全面的 AWS 文档,但我应用的策略仍然没有达到我的预期...让我解释一下
我正在尝试授予对角色的访问权限,以便在假定角色时,它可以使用 lambda
我创建了一个名为 "deployer" 的角色。
然后我将以下政策附加到该角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": "lambda:*"
"Resource": "arn:aws:iam::<account_id>:role/deployer"
}
]
}
我在这里的期望是政策说...指定的资源(部署者角色)是 "Allowed" 对 Lambda 服务执行任何操作
但是,当我在前端切换到该角色时,我在 Lambda 仪表板中收到以下错误:
You are not authorized to perform: lambda:GetAccountSettings.
我找到的唯一解决方案是在策略中通配 Resource 属性...然而,这否定了试图限制仅访问该角色的目的
符合我要求的政策示例
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": "lambda:*"
"Resource": "*"
}
]
}
有人可以向我解释一下这里到底发生了什么吗?我显然不明白 Resource 属性的用途...对我来说,第二个政策说任何资源都可以用 Lambda 做任何事情...
谢谢
您试图在资源属性中定义应用策略的角色 - 这不是资源属性的用途。资源属性与您希望用户能够调用的 Lambda 函数相关。
要将此策略分配给角色,只需按上述方式创建策略(适当定义您的 Lambda 资源,如果您真的想将此应用到所有 Lambda 函数,它可以是通配符)然后将策略分配给IAM 控制台中的角色。
有关定义资源的详细信息,请参阅 here。
改变
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": "lambda:*"
"Resource": "arn:aws:iam::<account_id>:role/deployer"
}
]
}
至
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": "lambda:*"
"Resource": "arn:aws:lambda:<region>:<account_number>:function:my-awesome-lambda-function"
}
]
}
我对 AWS 比较陌生,正在尝试了解角色策略的工作原理。我已经阅读了非常全面的 AWS 文档,但我应用的策略仍然没有达到我的预期...让我解释一下
我正在尝试授予对角色的访问权限,以便在假定角色时,它可以使用 lambda
我创建了一个名为 "deployer" 的角色。
然后我将以下政策附加到该角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": "lambda:*"
"Resource": "arn:aws:iam::<account_id>:role/deployer"
}
]
}
我在这里的期望是政策说...指定的资源(部署者角色)是 "Allowed" 对 Lambda 服务执行任何操作
但是,当我在前端切换到该角色时,我在 Lambda 仪表板中收到以下错误:
You are not authorized to perform: lambda:GetAccountSettings.
我找到的唯一解决方案是在策略中通配 Resource 属性...然而,这否定了试图限制仅访问该角色的目的
符合我要求的政策示例
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": "lambda:*"
"Resource": "*"
}
]
}
有人可以向我解释一下这里到底发生了什么吗?我显然不明白 Resource 属性的用途...对我来说,第二个政策说任何资源都可以用 Lambda 做任何事情...
谢谢
您试图在资源属性中定义应用策略的角色 - 这不是资源属性的用途。资源属性与您希望用户能够调用的 Lambda 函数相关。
要将此策略分配给角色,只需按上述方式创建策略(适当定义您的 Lambda 资源,如果您真的想将此应用到所有 Lambda 函数,它可以是通配符)然后将策略分配给IAM 控制台中的角色。
有关定义资源的详细信息,请参阅 here。
改变
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": "lambda:*"
"Resource": "arn:aws:iam::<account_id>:role/deployer"
}
]
}
至
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Action": "lambda:*"
"Resource": "arn:aws:lambda:<region>:<account_number>:function:my-awesome-lambda-function"
}
]
}