将对 AWS 资源的访问限制在一个特定区域
Restricting access to AWS resources to one specific region
我正在尝试将我的 lambda 完全访问权限限制在特定区域。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:*",
"dynamodb:*",
"events:*",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:ListRoles",
"iam:PassRole",
"lambda:*",
"logs:*",
"s3:*"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
]
}
这是我的政策。
但目前,它不工作用户仍然可以访问 lambda 并且它在另一个区域具有完全访问权限。
我在这里错过了什么?
您的 IAM 用户可能被允许在不同区域执行您的操作,因为您的政策仅 Allow
并且他们有其他政策允许不受限制的访问。
要解决此问题,您可以在策略中使用 Deny
语句,如 AWS: Denies access to AWS based on the requested Region 中所述。 Deny
总是赢,这意味着策略将优先于任何允许。
因此,根据链接的 AWS 文档,您的政策可能是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"cloudwatch:*",
"dynamodb:*",
"events:*",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:ListRoles",
"iam:PassRole",
"lambda:*",
"logs:*",
"s3:*"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
]
}
请注意,在 AWS 文档中,他们也使用 NotAction
,而不是 Action
。因此,您必须考虑您希望用户能够做什么或不能做什么。但在你的情况下,我认为 Action
没问题。
我正在尝试将我的 lambda 完全访问权限限制在特定区域。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:*",
"dynamodb:*",
"events:*",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:ListRoles",
"iam:PassRole",
"lambda:*",
"logs:*",
"s3:*"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
]
}
这是我的政策。
但目前,它不工作用户仍然可以访问 lambda 并且它在另一个区域具有完全访问权限。
我在这里错过了什么?
您的 IAM 用户可能被允许在不同区域执行您的操作,因为您的政策仅 Allow
并且他们有其他政策允许不受限制的访问。
要解决此问题,您可以在策略中使用 Deny
语句,如 AWS: Denies access to AWS based on the requested Region 中所述。 Deny
总是赢,这意味着策略将优先于任何允许。
因此,根据链接的 AWS 文档,您的政策可能是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"cloudwatch:*",
"dynamodb:*",
"events:*",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:ListRoles",
"iam:PassRole",
"lambda:*",
"logs:*",
"s3:*"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": "us-east-1"
}
}
}
]
}
请注意,在 AWS 文档中,他们也使用 NotAction
,而不是 Action
。因此,您必须考虑您希望用户能够做什么或不能做什么。但在你的情况下,我认为 Action
没问题。