【发布时间】:2019-05-16 09:08:22
【问题描述】:
我最近在使用 Code-Build 时遇到了带有 IAM 策略的 problem。我正在尝试了解以下 2 个策略之间的区别,并检查使用第 2 版而不是第 1 版是否存在任何安全隐患。
版本 1 不工作,所以我决定使用版本 2。但是为什么版本 2 可以工作,为什么版本 1 不工作?
版本 1 仅提供对 CodePipeline 资源的访问权限,并允许读取和写入 S3 存储桶对象。
但是版本 2 允许访问所有 S3 存储桶,不是吗?这会被视为安全漏洞吗?
版本 1
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": [
"arn:aws:logs:ap-southeast-1:682905754632:log-group:/aws/codebuild/Backend-API-Build",
"arn:aws:logs:ap-southeast-1:682905754632:log-group:/aws/codebuild/Backend-API-Build:*"
],
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
]
},
{
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::codepipeline-ap-southeast-1-*"
],
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion"
]
}
]
}
第 2 版
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": [
"arn:aws:logs:ap-southeast-1:682905754632:log-group:/aws/codebuild/Backend-API-Build",
"arn:aws:logs:ap-southeast-1:682905754632:log-group:/aws/codebuild/Backend-API-Build:*"
],
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
]
},
{
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::codepipeline-ap-southeast-1-*"
],
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion"
]
},
{
"Sid": "S3AccessPolicy",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:GetObject",
"s3:List*",
"s3:PutObject"
],
"Resource": "*"
}
]
}
【问题讨论】:
-
是的,这条规则太宽松了。系统可能只需要对存储桶的
ListObjects权限即可获取对象列表。您可以尝试将其添加到版本 1 (Action: s3:ListsObjects) 中,看看是否有帮助。
标签: amazon-web-services amazon-s3 amazon-iam