我们希望将 REST API 限制为特定的 AWS 账户。 不是账户中的特定用户,而是账户中的所有用户和资源。
我尝试过这个资源策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "execute-api:Invoke",
"Resource": "MY_API_ARN/*/*/*",
"Condition": {
"StringNotLike": {
"aws:userId": "*MY_ACCOUNT_NUMBER*"
}
}
}
]
}
API 应该可以从 AWS 账户内的 lambda 或 EC2 访问,但不能从外部访问。
重要提示:如果可能的话,我希望避免将 API 限制为 VPC。
我认为您需要尝试使用aws:SourceAccount
来满足您的条件:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Deny",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-east-1:*:a123456789/test/POST/mydemoresource/*",
"Condition": {
"StringNotEquals": {
"aws:SourceAccount": "a123456789"
}
}
}
]
}