Понимание политик IAM - PullRequest
       7

Понимание политик IAM

0 голосов
/ 15 декабря 2018

Недавно я столкнулся с проблемой с политиками IAM при использовании Code-Build.И я пытаюсь понять разницу между следующими 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": "*"
  }
    ]
}

1 Ответ

0 голосов
/ 16 декабря 2018

Я повторил сценарий, дав ограниченный доступ к конкретному S3 Bucket.

Блок 1: разрешить необходимые разрешения консоли Amazon S3 Здесь я предоставил CodePipeline для отображения списка всех сегментов в учетной записи AWS.

Блок 2: Разрешить листингобъекты в корневых папках здесь мое имя S3 Bucket называется "aws-codestar-us-east-1-493865049436-larvel-test-pipe"

, но я удивлен, когда я следовал инструкциям по созданиюCodePipeline для создания сборки из той же самой конвейерной консоли, я получил ту же политику, что и ваша версия 1, и она также была выполнена.Тем не менее, в качестве следующего шага, я дал специальное разрешение для корзины в S3, как указано ниже политики, и это сработало.Таким образом, в вашей второй версии вместо предоставления всех разрешений вашим ресурсам Ресурс ":" * "вы можете ограничить разрешение только определенным сегментом, как описано в следующем примере политики

{
   "Version": "2012-10-17",
   "Statement": [
    {
        "Effect": "Allow",
        "Resource": [
            "arn:aws:logs:us-east-1:493865049436:log-group:/aws/codebuild/larvel-test1",
            "arn:aws:logs:us-east-1:493865049436:log-group:/aws/codebuild/larvel-test1:*"
        ],
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ]
    },
    {
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::codepipeline-us-east-1-*"
        ],
        "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion"
        ]
    },
    {
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::aws-codestar-us-east-1-493865049436-larvel-test-pipe/*" 
        ],
        "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion"
        ]
    }
]
}
...