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

5분 분량
0

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

간략한 설명

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

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

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

참고: MFA 삭제는 버전 관리가 설정된 버킷에서만 지원됩니다. 버킷 소유자, 버킷을 생성한 AWS 계정, 권한이 있는 모든 IAM 사용자가 버전 관리를 켤 수 있습니다. 하지만 루트 계정의 버킷 소유자만 MFA 삭제를 켤 수 있습니다.

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

  1. 루트 사용자의 액세스 키와 암호 키를 생성합니다.
  2. 루트 사용자를 위한 MFA 삭제 디바이스를 활성화합니다.
  3. 루트 사용자 자격 증명으로 AWS Command Line Interface(AWS CLI)를 구성합니다.
  4. PutBucketVersioning API를 사용하여 MFA 삭제 기능을 활성화합니다.
  5. MFA 삭제가 작동하는지 확인합니다. 루트 액세스 키를 삭제해야 합니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

해결 방법

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

루트 사용자를 위한 액세스 키 생성의 지침을 따릅니다.

이러한 키를 생성한 후에는 키를 보거나 다운로드할 수 있는 기회가 한 번뿐이라는 경고 메시지가 표시됩니다. 이러한 키는 나중에 검색할 수 없습니다. 따라서 AWS CLI를 구성하기 위해 저장해 두어야 합니다.

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

루트 사용자용으로 활성화된 MFA 디바이스가 없는 경우 AWS 계정 루트 사용자용 가상 MFA 디바이스 활성화(콘솔)의 지침을 따르십시오.

루트 사용자용으로 활성화된 MFA 디바이스가 이미 있는 경우 ARN을 기록해 두십시오.

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

AWS CLI configure 명령을 실행합니다.

  1. AWS 액세스 키 ID를 입력하라는 메시지가 표시될 때(예: AKIAEXAMPLEABCQWE), 1단계에서 다운로드한 루트 사용자의 액세스 키 ID를 붙여넣습니다.
  2. 루트 사용자의 ** AWS 보안 액세스 키**를 입력하라는 메시지가 표시되면 보안 액세스 키 ID를 붙여넣습니다. 루트 사용자의 자격 증명이 포함된 파일에서 이 정보를 찾을 수 있습니다.
  3. (선택 사항) 기본 리전 이름을 묻는 메시지가 표시되면 건너뛰고 Enter 키를 눌러도 됩니다.
  4. (선택 사항) 기본 출력 형식을 묻는 메시지가 표시되면 건너뛰고 Enter 키를 눌러도 됩니다.

중요: AWS CLI에서 ](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) 명명된 프로파일[을 구성한 경우 루트 사용자의 자격 증명을 위한 다른 프로파일을 만들어야 합니다.

명명된 프로파일을 구성하려면 다음 명령을 실행합니다.

aws configure --profile root_user

PutBucketVersioning API를 사용하여 S3 MFA 삭제 기능을 활성화합니다.

MFA 삭제를 켜려면 put-bucket-versioning 명령을 실행합니다.

aws s3api put-bucket-versioning --bucket mybucketname --versioning-configuration MFADelete=Enabled,Status=Enabled --mfa "arn:aws:iam::(accountnumber):mfa/root-account-mfa-device (pass)"

예제:

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

이 예제에서 123789는 MFA 디바이스로 생성된 6자리 예제 코드입니다.

루트 사용자에 대해 명명된 프로파일을 사용한 경우 다음 명령을 실행합니다.

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

이 명령이 성공하면 출력이 표시되지 않습니다. 오류가 발생하면 AWS CLI의 최신 버전을 설치했는지 확인하십시오. 또한 루트 사용자를 사용하고 있고 MFA 코드 및 ARN이 유효한지 확인하십시오.

MFA 삭제가 작동하는지 확인

Amazon S3 콘솔에서 해당 버킷의 Versioning(버전 관리)이 켜져 있는지 확인합니다.

MFA 삭제가 켜져 있는지 확인하려면 GetBucketVersion API를 사용합니다.

aws s3api get-bucket-versioning --bucket mybucketname  
{  
    "Status": "Enabled",  
    "MFADelete": "Enabled"  
}

버킷에 대해 MFA 삭제를 켠 후에는 향후 모든 객체 삭제에 요청 헤더를 포함하여 객체 버전을 영구적으로 삭제해야 합니다. 헤더 값은 인증 디바이스의 일련 번호, 공백 및 여기에 표시된 인증 코드 체인입니다. 자세한 내용은 MFA 삭제가 활성화된 버킷에서 객체 삭제를 참조하십시오. delete-object 명령에서**--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 삭제가 켜진 버킷의 객체 버전을 삭제하려면 다음 명령을 실행합니다.

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

참고: AWS 계정 내에서 s3:DeleteObject 권한이 있는 IAM 사용자 또는 역할은 여전히 버전 ID를 지정하지 않고도 버킷 내의 객체에 대해 성공적인 delete-object 요청을 수행할 수 있습니다. 버전 관리가 적용된 버킷에서 이 요청은 삭제 마커를 생성합니다. 객체의 현재 버전은 이전 버전으로 유지됩니다. 이러한 버킷에서 객체를 영구적으로 삭제하는 유일한 방법은 delete-object 요청에 객체 버전의 버전 ID를 지정하는 것입니다. MFA 삭제를 켜면 루트 사용자만 버킷의 객체에 대해 버전 인식 삭제를 수행할 수 있습니다. 또한 루트 사용자는 루트 사용자 MFA 디바이스로 요청을 인증해야 합니다.

보안 모범 사례로서 MFA 삭제를 켠 후 다음을 수행하십시오.

  • AWS CLI에 저장된 루트 사용자 자격 증명을 무효화하고 제거합니다. AWS CLI 자격 증명은 운영 체제의 구성 폴더에 저장됩니다. 자세한 내용은 구성 및 자격 증명 파일 설정을 참조하십시오.
  • AWS Management Console을 사용하여 루트 사용자 액세스 키를 삭제합니다. 지침은 루트 사용자의 액세스 키 삭제를 참조하십시오.

관련 정보

MFA 삭제 구성

AWS 공식
AWS 공식업데이트됨 일 년 전