내용으로 건너뛰기

Amazon S3 버킷에 대한 MFA 삭제를 활성화하려면 어떻게 해야 합니까?

4분 분량
0

Amazon Simple Storage Service(Amazon S3) 버킷에 대해 다중 인증(MFA) 삭제를 활성화하여 의도하지 않은 삭제로부터 객체를 보호하려고 합니다.

간략한 설명

MFA 삭제를 구성하지 않으면 다음 권한 중 하나가 있는 사람은 누구나 Amazon S3 객체를 영구적으로 삭제할 수 있습니다.

  • 루트 사용자 암호
  • 삭제 권한이 있는 AWS Identity and Access Management(IAM) 사용자 또는 역할 자격 증명

MFA 삭제를 구성하면 루트 사용자만 S3 버킷의 객체 버전을 영구적으로 삭제하거나 버전 관리 구성을 변경할 수 있습니다. 삭제 작업을 수행하려면 MFA 디바이스를 사용하여 루트 사용자를 인증해야 합니다.

버킷에 대해 MFA 삭제를 구성하려면 다음 단계를 완료하십시오.

  1. 루트 사용자의 액세스 키와 시크릿 키를 생성합니다.
  2. 루트 사용자에 대해 MFA 디바이스를 활성화합니다.
  3. 루트 사용자 자격 증명으로 AWS CLI를 구성합니다.
  4. MFA 삭제를 구성합니다.
  5. MFA 삭제가 작동하는지 확인하고, 루트 액세스 키를 삭제합니다.

MFA 삭제는 S3 버전 관리를 설정한 버킷에서만 사용할 수 있습니다. 버킷 소유자, 버킷을 생성한 AWS 계정, 권한이 있는 모든 IAM 사용자가 버전 관리를 켤 수 있습니다. 하지만 루트 사용자 계정만 MFA 삭제를 활성화할 수 있습니다. MFA 삭제를 활성화하려면 AWS CLI 또는 아마존 S3 REST API를 사용해야 합니다.

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

해결 방법

루트 사용자의 액세스 키와 암호 키 생성

먼저 루트 사용자의 액세스 키를 생성합니다. 키를 생성한 후에는 즉시 다운로드하고 저장해야 합니다. 키는 나중에 가져올 수 없습니다.

루트 사용자를 위한 MFA 디바이스 활성화

루트 사용자를 위한 MFA 디바이스를 활성화하지 않은 경우 루트 사용자를 위한 가상 MFA 디바이스 활성화(콘솔)를 참조하십시오. 루트 사용자를 위해 MFA 디바이스를 이미 활성화한 경우 ARN을 기록해 두십시오.

루트 사용자 자격 증명으로 AWS CLI 구성

다음 단계를 완료합니다.

  1. AWS CLI configure 명령을 실행합니다.
  2. AWS 액세스 키 ID(예: AKIAEXAMPLEABCQWE)에 루트 사용자의 액세스 키 ID를 입력합니다.
  3. 루트 사용자의 AWS 보안 액세스 키에 시크릿 액세스 키 ID를 입력합니다. 루트 사용자의 자격 증명이 포함된 파일에서 시크릿 액세스 키를 찾을 수 있습니다.
  4. (선택 사항) 기본 리전 이름에 기본 AWS 리전을 입력할 수 있습니다.
  5. (선택 사항) 기본 출력 형식에 출력 형식을 입력할 수 있습니다.

중요: AWS CLI에서 명명된 프로파일을 구성한 경우 루트 사용자의 자격 증명을 위한 다른 프로파일을 만들어야 합니다. 명명된 프로파일을 구성하려면 다음 configure 명령을 실행합니다.

aws configure --profile root_user

S3 MFA 삭제 활성화

MFA 삭제를 활성화하려면 put-bucket-versioning 명령을 실행합니다.

aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::1XXXXXXX6789:mfa/root-account-mfa-device 123789"

참고: 위의 명령에서 1XXXXXXX6789를 계정 ID로 바꾸고 123789를 MFA 디바이스가 생성한 일련 번호로 바꾸십시오.

루트 사용자에 대해 명명된 프로파일을 사용하는 경우 put-bucket-versioning 명령을 실행합니다.

aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::1XXXXXXX6789:mfa/root-account-mfa-device 123789" --profile root_user

이 명령이 성공하면 출력이 표시되지 않습니다. 출력에서 오류가 표시되면 루트 사용자를 사용하고 있고 ARN 및 MFA 일련 번호가 유효한지 확인하십시오.

PutBucketVersioning API를 호출하여 MFA 삭제를 활성화할 수도 있습니다.

참고: 수명 주기 구성에는 MFA 삭제를 사용할 수 없습니다. 버킷에 수명 주기 구성이 있는 경우 앞선 put-bucket-versioning 명령을 실행하면 다음과 같은 오류가 표시됩니다.

"An error occurred (InvalidBucketState) when calling the PutBucketVersioning operation: Mfa Authentication is not supported on a bucket with lifecycle configuration. Delete lifecycle configuration before enabling Mfa Authentication."

MFA 삭제가 작동하는지 확인

먼저 S3 버전 관리를 활성화했는지 확인합니다. Amazon S3 콘솔 또는 GetBucketVersioning API를 사용할 수 있습니다.

aws s3api get-bucket-versioning --bucket mybucketname

출력 예시:

{    
    "Status": "Enabled",    
    "MFADelete": "Enabled"    
}

객체 버전을 영구적으로 삭제하려면 x-amz-mfa 요청 헤더를 포함해야 합니다. delete-object 명령에서 --mfa 옵션을 사용하여 헤더 값을 포함할 수 있습니다. 헤더 값은 인증 디바이스의 일련 번호, 공백 및 인증 코드 체인입니다. 자세한 내용은 MFA 삭제가 활성화된 버킷에서 객체 삭제를 참조하십시오.

MFA 삭제를 활성화하지 않고 객체 버전을 삭제하려는 경우 다음과 같은 오류가 발생합니다. IAM 사용자를 사용하여 객체 버전을 삭제하려고 할 때도 다음 오류가 발생합니다.

"aws s3api delete-object --bucket mybucketname --key myobjectkey --version-id 3HL4kqCxf3vjVBH40Nrjkd An error occurred (AccessDenied) when calling the DeleteObject operation: Mfa Authentication must be used for this request"

루트 사용자를 사용하여 MFA 삭제가 켜진 버킷의 객체 버전을 삭제하려면 delete-object 명령을 실행합니다.

aws s3api delete-object --bucket mybucketname --key myobjectkey --version-id 3HLkqCxf3vjVBH40Nrjkd --mfa "arn:aws:iam::(accountnumber):mfa/root-account-mfa-device (pass)" {    
    "VersionId": "3HLkqCxf3vjVBH40Nrjkd"    
}

참고: 계정의 IAM 사용자 또는 역할이 버전 ID 없이 delete-object 요청을 사용하도록 허용하려면 s3:DeleteObject 권한을 부여하십시오. 버전 관리 활성화 버킷의 경우 객체 삭제 요청은 삭제 마커만 생성합니다. 객체 버전을 영구적으로 삭제하지는 않습니다. 객체를 영구적으로 삭제하려면 객체의 버전 ID를 지정해야 합니다.

MFA 삭제를 활성화한 후 보안 모범 사례로 다음 작업을 수행하십시오.

AWS 공식업데이트됨 일 년 전