Amazon Web Services 한국 블로그

Amazon RDS의 IAM 기반 멀티 팩터 인증 활용하기

AWS가 고객으로부터 받는 일반적인 요청은 인스턴스, 스냅샷, 클러스터 등의 리소스를 실수에 의한 삭제 또는 악의적인 삭제로부터 보호하는 방법입니다. 이러한 보호 수단은 여러 사용자 또는 팀 간에 공용 AWS 계정을 사용하는 경우에 특히 중요합니다. 공용 계정을 사용하여 혁신할 수 있는 유연성을 원하지만 중요한 데이터를 잃지 않도록 보호할 수 있는 보안도 필요합니다.

한 가지 옵션은 Multi-Factor Authentication(MFA)과 함께 AWS Identity and Access Management(IAM)정책을 사용하는 것입니다. MFA를 사용할 경우 사용자가 AWS 작업을 수행하려고 할 때 승인된 인증 장치 또는 SMS 문자 메시지를 통해 제공되는 고유한 인증 코드를 입력해야 합니다. 이 블로그 게시물에서는 이 옵션을 구현하는 방법을 시연해봅니다.

예를 들어 AWS는 *prod*와 같은 명명 규칙을 사용하는 태깅을 통해, 보호되는 자산을 삭제할 수 있는 기능을 제한하는 IAM 정책을 생성합니다.

그런 다음 AWS Management Console에 액세스하는 데 MFA 인증을 요구하고 이 계정에 특정 삭제 권한만 부여하는 두 번째 IAM 정책을 생성합니다. 이런 방식으로, 액세스 권한이 있는 모든 사용자를 감사하고 선택한 개인만 필요한 권한을 갖도록 할 수 있습니다.

AWS는 두 가지 정책을 사용합니다. 한 가지는 AWS 관리형 정책인 AmazonRDSFullAccess이고, 다른 하나는 고객 관리형으로, RDSDenyDelete입니다. 이 정책은 사용자가 리소스를 삭제할 수 있는 명령을 실행하지 못하도록 제한합니다.

1단계: IAM 콘솔에서 시작

먼저 IAM 콘솔로 이동합니다. 정책 생성을 선택하고 다음 JSON 코드를 정책 편집기 상자에 붙여넣습니다.

{
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "rds:DeleteDBClusterSnapshot",
                "rds:DeleteDBSnapshot",
                "rds:DeleteDBCluster",
                "rds:DeleteDBInstance"
            ],
            "Resource": "*"
        }
    ]
}

정책 검토를 선택한 후 정책의 이름과 설명을 입력합니다.정책의 이름과 설명을 추가할 수 있는 '정책 검토’ 페이지의 스크린샷

이제 AmazonRDSFullAccess 정책과 RDSDenyDelete 정책을 결합하는 그룹을 생성합니다.

IAM 콘솔의 그룹에서 Create new group(새 그룹 생성)을 선택한 후 그룹 이름을 설정합니다. 여기서는 AWSDevelopmentTeam 을 예로 선택합니다.그룹 이름을 설정하는 스크린샷

Next step(다음 단계)을 선택합니다. 그리고 AmazonRDSFullAccessRDSDenyDelete옆에 있는 상자를 선택합니다.

Next step(다음 단계)을 선택한 후 Create group(그룹 생성)을 선택합니다.

이제 AWSDevelopmentTeam 그룹에 새로운 사용자를 추가하면 해당 사용자는 전체 Amazon RDS 액세스 권한을 갖게 되지만 중요한 리소스는 삭제하지 못합니다.

2단계: 정식 서비스용으로 태그 지정된 리소스로만 삭제 제한

개발 팀에게는 지금까지의 정책이 지나치게 제한적일 수 있습니다. 따라서 production으로 태그 지정된 리소스만 보호하기 위해 이 정책의 제한 수준을 낮춰보겠습니다. 이렇게 하면 AWSDevelopmentTeam 그룹의 개발자가 프로덕션 리소스를 보호하면서 테스트 인스턴스를 삭제할 수 있습니다. 이를 수행하려면 정책 편집기에서 RDSDenyDelete 로 돌아가서 다음 JSON 코드의 11~16행을 추가합니다.

1 {
2     "Statement": [
3         {
4             "Effect": "Deny",
5             "Action": [
6                 "rds:DeleteDBClusterSnapshot",
7                 "rds:DeleteDBSnapshot",
8                 "rds:DeleteDBCluster",
9                 "rds:DeleteDBInstance"
10             ],
11            "Resource": "*",
12             "Condition": {
13                 "StringLikeIfExists": {
14                     "aws:TagKeys": "production"
15                  } 
16              }
17         }
18     ]
19 }

참고: 이는 간단한 예입니다. 프로덕션 환경에서는 태그 자체가 이러한 리소스를 보호하기 때문에 AddTagsToResouceRemoveTagsFromResounce 에 대한 보호 수단도 포함해야 합니다. 이 접근 방식은 AddTagToResource API 작업으로 프로덕션 리소스에 태그를 지정해야 함을 의미합니다.

3단계: 정식 서비스 리소스를 삭제할 권한이 있는 그룹 생성

이제 프로덕션 리소스를 삭제하는 데 사용할 다른 정책을 만드는 방법을 보여줍니다. 리소스를 삭제해야 하는 경우에만 이 권한을 부여하면 됩니다. AWS 보안 책임자는 필요에 따라 이 권한을 선택적으로 부여하도록 선택할 수 있습니다.

다시 한 번, 다음 코드를 추가하여 정책 편집기에서 정책을 생성합니다.

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds:DeleteDBClusterSnapshot",
                "rds:DeleteDBSnapshot",
                "rds:DeleteDBCluster",
                "rds:DeleteDBInstance"
            ],
            "Resource": "*"
        }
    ]
}

정책 검토를 선택한 후 정책의 이름과 설명을 입력합니다.정책의 이름과 설명을 추가할 수 있는 '정책 검토’ 페이지의 스크린샷

마지막 단계: MFA로 이 정책 보호

MFA를 RDSDeleteResources 정책에 추가하려면 정책 편집기를 다시 열고, 다음 JSON 코드의 12-17행을 추가하여 MFA 인증을 요구합니다.

1 {
2     "Version": "2012-10-17",
3     "Statement": [
4         {
5             "Effect": "Allow",
6             "Action": [
7                 "rds:DeleteDBClusterSnapshot",
8                 "rds:DeleteDBSnapshot",
9                 "rds:DeleteDBCluster",
10                 "rds:DeleteDBInstance"
11             ],
12             "Resource": "*",
13             "Condition": {
14                 "BoolIfExists": {
15                     "aws:MultiFactorAuthPresent": "true"
16                 }
17             }
18         }
19     ]
20 }

이제 AWS 보안 책임자가 사용자에게 정책을 적용하면 사용자는 MFA를 통해 인증을 받아야 AWS Management Console 또는 API에 대한 액세스 권한을 부여받을 수 있습니다.

MFA 설정 방법

무료로 사용할 수 있는 MFA 애플리케이션이 많이 있습니다. 예를 들어 Authy라는 애플리케이션을 다운로드할 수 있습니다. AWS 사용자는 MFA 로그인 챌린지에 답하기 위해 MFA 디바이스(예: Authy가 설치된 휴대전화)를 등록해야 합니다.

MFA 디바이스를 선택하고 설정하는 방법에 대한 지침은 IAM 사용자 가이드Multi-Factor Authentication(MFA) 디바이스 활성화를 참조하십시오.

방금 생성한 정책과 같은 보호 정책에 대해 작업할 때 콘솔에 대한 사용자 액세스를 제한하는 것이 좋습니다. 따라서 삭제 권한이 있는 이러한 사용자를 생성할 때 해당 사용자에게만 “AWS Management Console 액세스” 권한을 부여합니다.

맺으면서

이 블로그 게시물에서는 중요한 데이터 리소스를 보호하는 메커니즘을 제공하는 동시에 공용 계정으로 혁신할 수 있는 유연성도 함께 제공하도록 IAM 보안 정책을 설정하는 방법을 보여줍니다. 또한 MFA를 사용하여 안전하지 않은 작업을 추가로 보호할 수 있는 수단을 제공하는 방법을 제시했습니다. 이제 액세스를 제어하는 수단으로 안전하지 않은 요청을 지정된 사용자로만 제한하는 방법을 갖게 되었습니다.

Phil Intihar의 사진이 글은 Amazon Web Services의 데이터베이스 엔지니어인 Phil Intihar는 작성하였으며, 원문은 How to use IAM multifactor authentication with Amazon RDS에서 보실 수 있습니다.