DynamoDB 테이블에서 실수로 인한 삭제 방지 기능을 켜려면 어떻게 해야 합니까?
데이터를 보호하기 위해 Amazon DynamoDB 테이블에서 실수로 인한 삭제 방지 기능을 설정하고 싶습니다.
간략한 설명
삭제 방지 기능을 사용하면 DynamoDB 테이블이 의도치 않게 삭제되는 경우를 방지할 수 있습니다. 이 기능이 활성화되어 있는 경우 테이블을 삭제하려면 명시적으로 삭제 확인을 해야 합니다. 또한 리소스 기반 정책을 사용하여 DynamoDB 테이블을 추가로 보호할 수 있습니다.
삭제 방지 기능을 활성화하려면 다음 방법 중 하나를 사용하십시오.
- DynamoDB 콘솔
- AWS Command Line Interface(AWS CLI)
- AWS SDK
해결 방법
DynamoDB 콘솔을 사용하여 삭제 방지 기능을 활성화합니다.
- AWS Management Console에 로그인합니다.
- Amazon DynamoDB 콘솔을 엽니다.
- 탐색 창에서 **Tables(테이블)**을 선택합니다.
- 실수로 인한 삭제 방지를 활성화하려는 테이블을 선택한 다음, 테이블 이름을 선택하여 테이블 세부 정보를 엽니다.
- Table details(테이블 세부 정보) 섹션에서 **Additional Settings(추가 설정)**을 선택합니다.
- **Deletion protection(삭제 방지)**에서 Turn On(활성화) 설정을 선택합니다.
- **Save(저장)**을 선택합니다.
AWS CLI를 사용하여 삭제 방지 기능 켜기
AWS CLI를 사용하여 DynamoDB 테이블에 대한 삭제 방지 기능을 활성화하려면 다음 명령을 실행합니다.
aws dynamodb update-table \ --table-name my-table \ --deletion-protection-enabled
참고:****my-table을 DynamoDB 테이블 이름으로 바꿉니다.
AWS SDK를 사용하여 삭제 방지 기능 활성화
또한 AWS SDK를 사용하여 삭제 방지 기능을 프로그래밍 방식으로 활성화할 수 있습니다. 다음은 Python용 AWS SDK(Boto3)를 사용하는 예시입니다.
import boto3 # Create a DynamoDB client dynamodb = boto3.client('dynamodb') # Set the table name table_name = 'my-table' # Enable delete protection try: response = dynamodb.update_table( TableName=table_name, DeletionProtectionEnabled=True ) print(f'Delete protection enabled for table {table_name}') except Exception as e: print(f'Error enabling delete protection: {e}')
**참고:****'my-table'**을 DynamoDB 테이블 이름으로 바꿉니다.
테이블을 삭제하려고 하면 다음과 같은 오류 메시지가 표시됩니다.
"An error occurred (ValidationException) when calling the DeleteTable operation: Resource cannot be deleted as it is currently protected against deletion. Disable deletion protection first."
**참고:**테이블을 성공적으로 삭제하려면 삭제 방지 기능을 비활성화해야 합니다.
추가 모범 사례
DynamoDB 테이블이 실수로 삭제되지 않도록 더욱 보호하려면 다음 모범 사례를 검토하십시오.
리소스 기반 정책 사용
리소스 기반 정책을 사용하여 리소스에 액세스하고 허용된 작업을 정의하는 AWS Identity and Access Management(IAM) 위탁자를 지정합니다. 리소스 기반 정책을 생성할 때는 DynamoDB 테이블 수준에서 샘플 정책을 연결하십시오. 다음 예시의 정책에는 **Admin(관리자)**을 제외한 모든 IAM 엔터티의 dynamodb:DeleteTable 작업에 대한 명시적 거부가 포함되어 있습니다. 전체 액세스 권한이 있는 IAM 엔터티가 테이블을 삭제하려고 하면 작업이 거부됩니다.
리소스 기반 정책 예시:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Deny", "Principal": "*", "Action": [ "dynamodb:DeleteTable" ], "Resource": [ "arn:aws:dynamodb:us-east-1:xxxxx:table/donotdeletetable" ], "Condition": { "ForAnyValue:ArnNotEquals": { "aws:PrincipalArn": "arn:aws:iam::xxxxx:role/Admin" } } } ] }
오류 메시지 예시:
"Your delete table request encountered issues. User: arn:aws:sts::xxxxx:assumed-role/dynamodbfullaccessrole/database-admin is not authorized to perform: dynamodb:DeleteTable on resource: arn:aws:dynamodb:us-east-1:xxxx:table/donotdeletetable with an explicit deny in a resource-based policy."
서비스 제어 정책
AWS Organizations는 속성 기반 액세스 제어(ABAC)와 함께 서비스 제어 정책(SCP)을 사용하여 조직 수준에서 테이블 삭제 작업을 제한할 수 있습니다. 사용자가 키-값 쌍으로 프로덕션과 같이 태그가 지정된 테이블을 삭제하지 못하도록 SCP 정책을 구성할 수 있습니다. 이 구성의 경우 테이블을 삭제하기 전에 연결된 태그를 제거해야 합니다. 이 구성을 통해 관리자는 조직 전체에서 실수로 삭제할 위험을 줄일 수 있습니다.
ABAC를 사용하는 SCP 예시:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Deny", "Action": [ "dynamodb:DeleteTable" ], "Resource": [ "arn:aws:dynamodb:us-east-1:xxxxx:table/donotdeletetable" ], "Condition": { "ForAnyValue:StringEqualsIfExists": { "aws:ResourceTag/environment": "production" } } } ] }
오류 메시지 예시:
"Your delete table request encountered issues. User: arn:aws:sts::xxxx:assumed-role/Admin/dbadmin is not authorized to perform: dynamodb:DeleteTable on resource: arn:aws:dynamodb:us-east-1:xxxx:table/donotdeletetablewithtags with an explicit deny in a service control policy."
관련 정보
관련 콘텐츠
- 질문됨 2년 전lg...
- 질문됨 2년 전lg...
- 질문됨 10달 전lg...
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 일 년 전