AWS 버킷 정책 - 사용 시기

AWS 버킷 정책 - 사용 시기

특정 버킷의 putObject에 액세스 권한을 부여하기 위해 ec2 또는 ecs 인스턴스의 액세스 권한을 부여하는 버킷 정책을 생성하려고 합니다.

몇 가지 기본적인 질문이 있습니다.

1) ec2에서 동일한 계정 내의 버킷에 대한 액세스 권한을 부여하려는 경우 버킷 정책을 사용하는 것이 올바른 것입니까? 문서에서는 교차 계정 액세스에 대해 많이 언급하는 것 같습니다.

2) 이를 이루기 위해서는 어떤 원칙이 있어야 합니까? 예를 들어, "이 aws 계정의 모든 리소스로부터 액세스 권한을 부여합니다"라고 간단히 설정할 수 있는 원칙이 있습니까?

3) 원칙적으로 ec2 인스턴스의 IAM 역할을 지정하여 이 작업을 수행했습니다(아래 참조). 그러나 이것이 선호되는 방법입니까?

{
"Version": "2012-10-17",
"Id": "Policy1563569774763",
"Statement": [
    {
        "Sid": "Stmt1563569772515",
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::XXXX:role/S3_Read_All"
            ]
        },
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::some-test-bucket-12345/*"
    }
]

}

미리 감사드립니다! 이것에 대해 내 머리를 감싸기가 어렵다는 것을 알았습니다.

답변1

당신의 직감이 맞았습니다. 동일한 계정의 버킷에 대한 액세스 권한을 부여하고 싶은 경우에는 다음이 더 간단할 수 있습니다.IAM 정책 사용. 이러한 정책을역할, 그러면 EC2 인스턴스에 연결됩니다.

한 가지 주목할 점은 첫 번째 링크의 정책을 고려할 때 다음과 같습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::bucket-name"]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": ["arn:aws:s3:::bucket-name/*"]
        }
    ]
}

첫 번째 문인 "ListObjectsInBucket"에는 버킷으로 설정된 리소스가 있습니다. ARN은 arn:aws:s3:::bucket-name(아니요 *)입니다. 두 번째 명령문에는 arn이 로 설정되어 있습니다 arn:aws:s3:::bucket-name/*. 이는 /*"버킷 bucket-name의 모든 개체"를 의미합니다. 일부 IAM 작업은 버킷에 적용되고 다른 작업은 객체에 적용됩니다.

와 같은 접두사를 사용하면 arn:aws:s3:::bucket-name/prefix*이름이 "prefix"로 시작하는 모든 개체에 액세스할 수 있습니다. S3의 객체 이름은 경로 표시("/")를 포함한 전체 이름이므로 "객체"가 아니라 "/path/to/object"입니다. S3에는 디렉터리가 없습니다.

또 다른 점은 EC2 인스턴스에 역할을 연결하면 해당 인스턴스에 액세스할 수 있는 모든 사람에게 해당 역할과 동일한 권한을 부여한다는 것입니다. 따라서 EC2 인스턴스에 로그인할 수 있는 모든 사용자는 S3 버킷에도 액세스할 수 있어야 합니다.

버킷에 대한 객체(사용자, EC2 인스턴스, 람다 함수 등)의 액세스 수준은 IAM 정책과 버킷 정책을 결합하여 생성된 정책 세트에 따라 결정됩니다. 그리고 Deny 문이 우선적으로 적용됩니다. 객체와 버킷이 모두 동일한 계정에 있고 IAM 정책이 자연스러운 선택인 경우 둘 중 하나만 사용하면 됩니다. 교차 계정 액세스 버킷 정책은 기본적으로 다른 계정에 버킷에 대한 액세스 권한을 부여하는 데 사용됩니다. IAM 정책은 다른 계정에도 설정되어 있습니다.

관련 정보