궁금한게 많은 개발자 노트

[ AWS ] IAM Permissions 본문

DevOps

[ AWS ] IAM Permissions

궁금한게 많은 개발자 2022. 10. 7. 13:25

IAM : Identity and Access Management, Global Service

AWS Resource에 대한 액세스 권한 관리

User는 조직내 구성원들을 뜻하며, grouping되어 질 수 있다. 그룹은 다른 그룹을 포함할 수 없으며 User로만 구성됨

모든 User가 Group에 속해야 하는 것은 아니며, 하나의 User는 여러 Group에 속할 수 있습니다.

 

User를 생성하고 Group을 생성하는 이유: Permissions

IAM내에서 User나 Group은 JSON documents로 관리되어 집니다. User가 어떤 것을 할 수 있는지 또는 어떤 그룹에 속하며 그 그룹은 어떤 것을 할 수 있는 지에 대한 권한 설정을 할 수 있습니다.

(least privilege principle이 적용됨 - User가 필요한 권한보다 더 많은 권한을 위임하지 마라)

 

User를 Group에 추가하면, Group이 가지고 있는 권한을 위임받게 됩니다.

각 그룹의 권한은 policy에 정의되고 그 policy를 그룹에 추가할 수 있습니다.

사용자마다 tag를 추가할 수 있으며, 그것은 사용자의 활동 추적 및 관리 access control에 사용될 수 있습니다.

 

User의 Account ID가 숫자라 login시 불편할 수 있기에 Account Alias가 존재하여 보다 편하게 로그인이 가능합니다.

또한, URL alias도 존재하여 account ID가 적용된 login page로 이동할 수 있습니다.

 

 

[ IAM Policy ]

Group level에 policy를 추가하면 해당 Group에 속한 User들은 해당 policy에 따라 권한을 가지게 됩니다.

물론 Group속하지 않더라도 inline policy를 특정 User에게 추가하고 해당 권한을 위임할 수 있습니다.

IAM Policy Structure도 JSON document로 관리됩니다.

Version: policy language version

Id: policy를 구분하는 id

Statement: one or more indivisual statements, sid는 statement id이며, effect는 allow/deny access, priciple는 해당 policy를 적용할 대상(account/user/role), action은 해당 policy에서 allow/deny할 list, resource는 actions이 적용되는 자원, condition은 해당 policy가 적용되거나 그렇지 않을 조건을 나타냄

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "iam:GetContextKeysForCustomPolicy",
                "iam:GetContextKeysForPrincipalPolicy",
                "iam:SimulateCustomPolicy",
                "iam:SimulatePrincipalPolicy"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

 

사용자에게 권한을 부여하는 방법으로는 Add Permissions를 통해 기존에 존재하는 policy를 추가하거나 policy를 만들어서 추가할 수 있고, 다른 방법은  Add lnline policy를 추가할 수 있습니다.

또한 User Group에 해당 User를 추가함으로써 Group이 가지고 있는 policy를 적용할 수도 있습니다.

 

Policy를 새로 생성할 수도 있으며 생성하는 방법으로는 visual editor를 활용하여 원하는 service, actions, resources, conditions를 설정할 수도 있으며 JSON format으로 직접 작성할 수 있습니다.

 

 

[ IAM Roles for services ]

몇몇 AWS Service들은 사용자를 대신하여 action들을 수행해야 합니다. 그럴 때 service들은 어떤 permission들을 가져야할 수 있습니다. 이를 위해 우리는 AWS service들에 IAM Roles를 사용하여 권한을 부여합니다.

IAM Role은 특정 사용자를 위한 것이 아니라 AWS Service들을 위한 권한입니다.

예를 들면 EC2 Intance라는 가상 server가 몇몇 action들을 AWS에 수행해야 합니다. 그를 위해서는 권한이 필요하고, IAM Role을 생성하고 부여해야 합니다. 즉, 특정 Role(Permissions or policies)을 가진 AWS Service가 AWS에 어떤 정보를 요청하면, 해당 Role이 그에 맞는 권한을 가지고 있다면, 그것에 Access 할 수 있게 됩니다.

 

 

[ IAM Security Tools ] (Audit)

- IAM Credentials Report (account-level)

모든 계정들의 User list를 보여주고, 그들의 다양한 credential들을 report해줍니다. 계정들을 관리하는데 용이한 정보

- IAM Access Advisor (user-level)

사용자에게 부여된 service권한들을 보여주고, 그러한 서비스들이 마지막으로 언제 접근되었는지 알려줍니다.

이러한 정보를 policy를 수정하는데 사용할 수 있습니다.

 

 

'DevOps' 카테고리의 다른 글

[ AWS ] EC2 Security Groups  (0) 2022.10.12
[ AWS ] EC2 Instance basic  (0) 2022.10.09
[ AWS ] Cloud Overview  (0) 2022.10.06
[ AWS ] Cloud Computing  (0) 2022.10.03
Github Action  (0) 2022.04.14
Comments