отказ в доступе к корзине S3, кроме определенной лямбды - PullRequest
1 голос
/ 22 октября 2019

Я пытаюсь добавить приведенную ниже политику корзины, которая запрещает доступ к корзине для любой операции (получить, положить, удалить), кроме моей лямбда-AWS. Не могли бы вы помочь, почему это не работает

{
    "Version": "2012-10-17",
    "Id": "Policy#####",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::#####-s3-file-upload/*"
            ],
            "Condition": {
                "ArnNotEquals": {
                    "aws:SourceArn": "arn:aws:lambda:us-east-1:5######1:function:temp_read_s3"
                }
            }
        }
    ]
}

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Шаг 1. Создайте лямбда-роль для выполнения лямбды.

{
    "Version": "2012-10-17",
    "Statement": [{
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "arn:aws:s3:::XXX-s3-file-upload",
            "arn:aws:s3:::XXX-s3-file-upload/*"
        ]
    }]
}

Шаг 2. Добавьте эту роль в лямбду. Шаг 3. Добавьте эту роль в политику S3, чтобы ограничить только эту роль.

{
    "Version": "2008-10-17",
    "Statement": [{
        "Sid": "S3 Access Permissions",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::2XXXXXXXXX:role/executionrole"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::sample_bucket",
            "arn:aws:s3:::sample_bucket/*"
        ]
    }]
}

enter image description here

Таким образом, вы можете ограничить только определенную лямбду. Для другой лямбды вы можете использовать другую роль выполнения.

Ссылка: https://aws.amazon.com/premiumsupport/knowledge-center/lambda-execution-role-s3-bucket/

0 голосов
/ 23 октября 2019

решение для лямбды заключается в добавлении предполагаемой роли. Немного покопавшись и обнаружив неполадки, я понял, что лямбда-функция выполняет ту роль, которую вы предоставляете, и что эта предполагаемая роль также должна быть добавлена ​​в политику сегмента S3, как показано ниже.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "2", "Effect": "Deny", "NotPrincipal": { "AWS": [ "arn:aws:iam::55account_id111:role/iam_policy_role", "arn:aws:sts::55account_id111:assumed-role/#####_lambda_role/lambda_function" ] }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ] "Resource": [ "arn:aws:s3:::######-bucketName/*", "arn:aws:s3:::######-bucketName" ] } ] }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...