DynamoDB의 리소스 기반 정책으로 퍼블릭 액세스 차단 - Amazon DynamoDB

DynamoDB의 리소스 기반 정책으로 퍼블릭 액세스 차단

퍼블릭 액세스 차단(BPA)은 Amazon Web Services(AWS) 계정의 DynamoDB 테이블, 인덱스 또는 스트림에 대한 퍼블릭 액세스를 허용하는 리소스 기반 정책의 연결을 식별하고 이를 방지하는 기능입니다. BPA를 사용하면 DynamoDB 리소스에 대한 퍼블릭 액세스를 차단할 수 있습니다. BPA는 리소스 기반 정책을 만들거나 수정하는 동안 검사를 수행하며 DynamoDB의 보안 태세를 개선하는 데 도움이 됩니다.

BPA는 자동 추론을 사용하여 리소스 기반 정책에 의해 부여된 액세스를 분석하고 리소스 기반 정책을 관리할 때 해당 권한이 발견되면 알려줍니다. 분석을 통해 정책에 사용되는 모든 리소스 기반 정책 문, 작업 및 조건 키 집합에 대한 액세스를 확인합니다.

중요

BPA는 테이블, 인덱스, 스트림과 같은 DynamoDB 리소스에 직접 연결된 리소스 기반 정책을 통해 퍼블릭 액세스가 허용되지 않도록 함으로써 리소스를 보호합니다. BPA를 사용하는 것 외에도 다음 정책을 주의 깊게 검토하여 퍼블릭 액세스를 허용하지 않는지 확인하세요.

  • 관련 AWS 보안 주체(예: IAM 역할)에 연결된 자격 증명 기반 정책

  • 관련 AWS 리소스(예: AWS Key Management Service(KMS) 키)에 연결된 리소스 기반 정책

보안 주체* 항목이 포함되지 않도록 하거나 지정된 조건 키 중 하나가 보안 주체의 리소스 액세스를 제한하는지 확인해야 합니다. AWS 계정 전반에서 리소스 기반 정책이 테이블, 인덱스 또는 스트림에 대한 퍼블릭 액세스를 허용하는 경우 DynamoDB는 정책 내의 사양이 수정되어 퍼블릭이 아닌 것으로 간주될 때까지 정책을 생성하거나 수정하지 못하도록 차단합니다.

Principal 블록 내에 하나 이상의 보안 주체를 지정하여 정책을 퍼블릭이 아닌 상태로 만들 수 있습니다. 다음 리소스 기반 정책 예시는 두 개의 보안 주체를 지정하여 퍼블릭 액세스를 차단합니다.

{ "Effect": "Allow", "Principal": { "AWS": [ "123456789012", "111122223333" ] }, "Action": "dynamodb:*", "Resource": "*" }

특정 조건 키를 지정하여 액세스를 제한하는 정책도 퍼블릭으로 간주되지 않습니다. 리소스 기반 정책에 지정된 보안 주체 평가와 함께 다음과 같은 신뢰할 수 있는 조건 키를 사용하여 퍼블릭이 아닌 액세스에 대한 리소스 기반 정책의 평가를 완료합니다.

  • aws:PrincipalAccount

  • aws:PrincipalArn

  • aws:PrincipalOrgID

  • aws:PrincipalOrgPaths

  • aws:SourceAccount

  • aws:SourceArn

  • aws:SourceVpc

  • aws:SourceVpce

  • aws:UserId

  • aws:PrincipalServiceName

  • aws:PrincipalServiceNamesList

  • aws:PrincipalIsAWSService

  • aws:Ec2InstanceSourceVpc

  • aws:SourceOrgID

  • aws:SourceOrgPaths

또한 리소스 기반 정책을 퍼블릭이 아닌 상태로 설정하려면 Amazon 리소스 이름(ARN) 및 문자열 키의 값에 와일드카드나 변수가 포함되어서는 안 됩니다. 리소스 기반 정책에서 aws:PrincipalIsAWSService 키를 사용하는 경우 키 값을 true로 설정했는지 확인해야 합니다.

다음 정책은 지정된 계정의 John 사용자에 액세스 권한을 제한합니다. 이 조건에 따라 Principal이 제한되며 퍼블릭으로 간주되지 않습니다.

{ "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "dynamodb:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:user/John" } } }

다음은 StringEquals 연산자를 사용하는 퍼블릭이 아닌 리소스 기반 정책 제약 sourceVPC의 예입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection", "Condition": { "StringEquals": { "aws:SourceVpc": [ "vpc-91237329" ] } } } ] }