DynamoDB Transactions에서 IAM 사용 - Amazon DynamoDB

DynamoDB Transactions에서 IAM 사용

AWS Identity and Access Management(IAM)를 사용하여 Amazon DynamoDB에서 트랜잭션 작업이 수행할 수 있는 작업을 제한할 수 있습니다. DynamoDB에서 IAM 정책을 사용하는 방법에 대한 자세한 내용은 DynamoDB에 대한 자격 증명 기반 정책 단원을 참조하세요.

Put, Update, DeleteGet 작업에 대한 권한은 기본 PutItem, UpdateItem, DeleteItemGetItem 작업에 사용되는 권한에 따라 규제됩니다. ConditionCheck 작업의 경우 IAM 정책에서 dynamodb:ConditionCheck 권한을 사용할 수 있습니다.

다음은 DynamoDB 트랜잭션을 구성하는 데 사용할 수 있는 IAM 정책의 예입니다.

예 1: 트랜잭션 작업 허용

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:ConditionCheckItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:*:*:table/table04" ] } ] }

예 2: 트랜잭션 작업만 허용

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:ConditionCheckItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:*:*:table/table04" ], "Condition": { "ForAnyValue:StringEquals": { "dynamodb:EnclosingOperation": [ "TransactWriteItems", "TransactGetItems" ] } } } ] }

예 3: 비트랜잭션 읽기 및 쓰기 허용, 트랜잭션 읽기 및 쓰기 차단

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "dynamodb:ConditionCheckItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:*:*:table/table04" ], "Condition": { "ForAnyValue:StringEquals": { "dynamodb:EnclosingOperation": [ "TransactWriteItems", "TransactGetItems" ] } } }, { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:UpdateItem" ], "Resource": [ "arn:aws:dynamodb:*:*:table/table04" ] } ] }

예 4: ConditionCheck 실패 시 정보 반환 방지

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:ConditionCheckItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem" ], "Resource": "arn:aws:dynamodb:*:*:table/table01", "Condition": { "StringEqualsIfExists": { "dynamodb:ReturnValues": "NONE" } } } ] }