본문 바로가기

AWS/IAM

자신의 Password 및 AccessKey만 교체할 수 있는 정책

안녕하세요. 오늘은 보안규정 준수를 위하여 IAM User의 Password 및 Access Key를 정기적으로

교체해야 할 때, 사용자 스스로 Password와 AccessKey를 교체할 수 있도록 IAM User에게

최소권한의 Policy를 부여해보도록 하겠습니다.
(관리자가 직접 하려면 너무 귀찮...)


Password 교체의 경우 Root 계정에서 Password 정책을 설정하여서 Password의 만료일자 등을 지정하면

간단하지만, Access Key의 경우 보통 개발자에게 발급이 되고 이러한 Access Key는 Application에 연동이 되어 있을

확률이 매우매우매우 높기때문에, 함부로 비활성화 하거나 삭제한다면 장애로 이어질 수 있습니다.

 

이러한 장애를 예방하기 위해서 Secret Manager를 적절하게 사용하여 Access Key를 회전시키거나,

AWS IAM Access Key 교체 모범사례를 참고하여, 2개의 Access Key를 모두 활성화 한 상태에서

테스트를 진행하며 교체를 시켜주어야 하는데요.

 

IAM User가 직접 자신의 Access Key를 직접 생성하고, 비활성화하고 삭제까지 할 수 있도록,
또 이러한 작업이 자기 자신에 대해서만 허용하도록 하는 Policy를 제공드리고자 합니다.


전혀 어렵지 않은 내용이다보니, 밑에서 진행할 Policy 생성, 부착 등을 차례로 보여드리기보다

먼저 Json 형식 먼저 보여드리겠습니다 ^^

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListUsers",
                "iam:GetAccountPasswordPolicy"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:*AccessKey*",
                "iam:ChangePassword",
                "iam:GetUser",
                "iam:*ServiceSpecificCredential*",
                "iam:*SigningCertificate*"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        }
    ]
}

 

여기서 ${aws:username}은 AWS에서 제공하고 있는 환경변수로써, 로그인 or Access Key 소유자의

IAM Name을 반환해줍니다.

 

그럼 이제 위 Policy를 생성하고, IAM User or IAM Group에 부착해보도록 하겠습니다.


  • AWS Web Console - IAM - Policies - Create policy - Json - 위 코드 복사 & 붙여넣기!

Create policy

다음 단계에서 Policy의 이름과 설명을 적절하게 입력해주세요.


Policy 생성이 끝났다면 남은것은 기존에 존재하는 IAM User나 Group에 생성한 Policy를 Attach 하는 것 입니다.

 

  • AWS Web Console - IAM - Group - Select - Attach Policy

Attach Policy

 

이후 위에서 생성한 정책 이름을 입력하여 부착해주면 됩니다.

예제에서도 Group에 Policy를 Attach(부착)한 이유는 AWS에서의 권고사항은 IAM User를 Group에 넣어
관리하는 것 이기 때문입니다.
즉, IAM User는 Group에 할당된 Policy를 상속받게 하여 관리하고, IAM User 자체에 Policy를

Attach하는 것을 권장하지 않습니다.

 

오늘은 정말 너무너무 쉽고 간단하지만, 개인적으로는 참 중요하다고 생각되는 내용을 담아봤습니다.

 

최소권한 준수, 정기적인 Password 및 Access Key 교체, IAM 모범사례.. 모두 너무너무 중요한 내용이라고 생각합니다.

 

그럼 다음에 또 다른 포스팅으로 인사드리겠습니다.

 

 

감사합니다.