Как ограничить доступ к корзине S3 конкретным VPC, одновременно разрешая доступ к консоли

Достаточно плохо, что некоторые чувствительные к регистру языки допускают такие вещи, как:

class New;

class Something
{
    New makeNew()
    {
      return new New();
    }
}

Но почему бы вам когда-нибудь захотелось написать строку кода следующим образом:

class new;

class Something
{
    bool if;

    new makeNew()
    {
        return if ? new new() : null;
    }
}

Просто взгляните на подсветку синтаксиса. Даже он запутывается!

0
задан Dr. Michael Boeni 18 January 2019 в 16:37
поделиться

1 ответ

Я нашел решение, которое, кажется, работает. Я проверил его в симуляторе политики, и он также работает правильно в реальной среде. Следующая политика работает:

{
    "Version": "2012-10-17",
    "Id": "Policy-S3-Bucket-myBucket",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:username": ["user1", "user2"]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::myBucket"],
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "vpc-01c9d66c12345"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::myBucket"],
            "Condition": {
                "StringEquals": {
                    "aws:username": ["user1", "user2"]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": ["arn:aws:s3:::myBucket/*"],
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "vpc-01c9d66c12345"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": ["arn:aws:s3:::myBucket/*"],
            "Condition": {
                "StringEquals": {
                    "aws:username": ["user1", "user2"]
                }
            }
        }
    ]
}

Политика требует, чтобы либо строка sourceVpc ИЛИ имя пользователя было таким, как указано в условии.

По общему признанию, политика многословна, и существует значительное количество тиражирования. Если у кого-то есть идея решить эту проблему более эффективно, я весь в ушах.

0
ответ дан Dr. Michael Boeni 18 January 2019 в 16:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: