다른 AWS 계정의 사용자가 내 Amazon S3 버킷을 사용할 때 MFA를 사용하도록 요구하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 12월 8일

보안을 강화하기 위해, 다른 AWS 계정의 사용자가 내 Amazon Simple Storage Service(Amazon S3) 버킷에 액세스할 때 멀티팩터 인증(MFA) 디바이스를 사용하도록 요구하려고 합니다. 어떻게 해야 합니까?

해결 방법

다른 AWS 계정의 사용자가 MFA 디바이스를 사용하여 인증하도록 요구하는 MFA 관련 조건을 버킷 정책에 추가하십시오.

이렇게 하려면 먼저, 다른 AWS 계정의 사용자가 다음 요구 사항을 충족해야 합니다.

  • 해당 사용자에게 Amazon S3 작업에 액세스할 수 있는 권한이 있어야 합니다. 예를 들어, AWS Identity and Access Management(IAM) 정책에 AWS 관리형 정책 AmazonS3FullAccess가 있는 사용자는 이 요구 사항을 충족하는 것입니다.
  • 사용자에게 GetSessionToken 호출을 허용하는 IAM 정책이 연결되어 있어야 합니다.
  • IAM 자격 증명에 사용하도록 구성된 MFA 디바이스가 있어야 합니다.

그런 다음, aws:MultiFactorAuthPresent 또는 aws:MultiFactorAuthAge 조건을 사용하는 버킷 정책을 만듭니다. 이 조건은 사용자가 MFA 디바이스를 사용하여 인증했는지를 확인합니다.

예를 들어 다른 계정의 사용자가 MFA 디바이스를 사용하여 인증하지 않은 경우 s3:PutObject, s3:PutObjectAcl 또는 s3:DeleteObject 작업을 실행할 수 있는 권한을 가진 사용자를 거부한다고 가정합니다. 버킷 정책 작성은 다음 두 부분으로 이루어집니다.

1.    첫 번째 부분은 다음과 같이, 사용자가 MFA를 사용하여 인증하지 않을 경우 해당 작업을 명시적으로 거부할 수 있습니다("aws:MultiFactorAuthPresent": "false" 조건 충족).

{
    "Version": "2012-10-17",
    "Id": "Policy201612130001aa",
    "Statement": [
        {
            "Sid": "Stmt201612130001ab",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::example.accounta.bucket/*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        },
...

2.    정책의 두 번째 부분은 다음과 같이, 사용자가 MFA를 사용하여 인증할 경우 해당 작업을 명시적으로 허용할 수 있습니다("aws:MultiFactorAuthPresent": "false" 조건 충족 안 함).

...
        {
            "Sid": "Stmt201612130001ac",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::example.accounta.bucket",
                "arn:aws:s3:::example.accounta.bucket/*"
            ]
        }
    ]
}

버킷에 비슷한 버킷 정책을 추가하면 사용자가 AWS 명령줄 인터페이스(AWS CLI) 명령 get-session-token을 실행하여 내 버킷의 리소스에 액세스하는 데 필요한 자격 증명을 받을 수 있습니다. 이 명령은 사용자가 다음을 제공하도록 요구합니다.

  • MFA 디바이스에서 생성한 임시 코드
  • 하드웨어 MFA 디바이스에 대한 디바이스 일련번호 또는 소프트웨어 MFA 디바이스의 ARN(Amazon Resource Name)

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

자격 증명을 받는 또 다른 방법은 사용자가 임시 자격 증명을 환경 변수로 내보내는 것입니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?