Frank 씨가 Aurora를
MFA 디바이스를 사용하여
AWS S3 버킷을 보호하는 방법을 보여줍니다.

frank_enforce_mfa_other_account_access_bucket

보안을 강화하기 위해, 다른 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 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2016년 1월 27일

업데이트됨: 2018-10-25