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

2분 분량
0

다른 사용자가 내 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 디바이스를 사용하여 인증하지 않는 한 특정 작업을 수행하지 못하도록 거부한다고 가정해 보겠습니다. 버킷 정책 작성은 다음 두 부분으로 이루어집니다.

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"
                }
            }
        },
...

이 예시에서는 사용자가 s3:PutObject, s3:PutObjectAcl 및 s3:DeleteObject 작업을 수행하지 못하도록 합니다.

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/*"
            ]
        }
    ]
}

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

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

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

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


관련 정보

버킷 정책 예제

AWS CLI 구성

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