내가 해본 IAM는 아직 이론이고 Policy이지만 정말 중요하다가 체감이 됬다
우선 IAM Policy를 하기전에 알아야할 것들이 있다
첫번째는 잘 사용되지않는 UBAC (User-Based Access Control) 문장 그대로 사용자(User)에게 기반(Based)을 둔 접근 제한(Access Control)이다 예시를 들자면
사용자B1: b 가능
사용자A2: a 가능
사용자A1: a 가능
사용자B2: b 가능
와 같이 사용자에게 직접적으로 권한을 넣어주는 것이다 하지만 이와 같은 방법은 가면 갈수록 꼬인다 예시를 잘 보면 뭔가 공통되는게 있을 것이다 그게 바로
GBAC (Group-Based Access Control) 사용자에게 직접 권한을 주는 것보다 그룹에다 권한을 주고 사용자를 그룹에 넣으면 더 효율적인 것 같아 이런 방식을 만들었다 이 또한 꼬이는 것은 마찬가지다
// 그룹 권한 설정
그룹A: a가능
그룹B: b가능
//사용자 그룹 설정
사용자A1: 그룹A
사용자A2: 그룹A
사용자B1: 그룹B
사용자B2: 그룹B
그런데 권한이 다양하게 존재하면 그룹도 점점 복잡하게 된다
// 그룹 권한 설정
그룹A: a가능
그룹B: b가능
그룹C: [a가능, c가능]
그룹D: [a가능, c불가, d가능]
// 사용자 그룹 설정
사용자A1: 그룹A
사용자A2: [그룹A, 그룹D]
사용자B1: [그룹B, 그룹C]
사용자B2: [그룹B, 그룹D]
그래서 여기서 추가로 Role이 추가가 되는 것이다.
RBAC (Role-Based Access Control)
그룹에다가 권한을 바로 주는 대신에 권한의 논리적 집합으로서 역할을 만들고 역할을 그룹이나 사용자에 연결한다
즉 Group은 UserGroup으로 주로 사용하고 Role은 권한의 Group으로 사용한다 (간접 계층 추가)
권한 검사를 할 때 Group에 대해서 조건을 거는 것보다는 좀 더 보안적인 측면에 가까운 Role에 대해서 규칙을 설정하는 게 쉽다
그래서 AWS의 많은 서비스에서 권한을 설정할 때는 IAM Group은 사용되지 않고 대신 IAM Role을 지정하는 부분이 많다
난 Group은 울타리에 비유하고 Role은 포스트잇에 비유해 (태그 같은 거라고 봐도 돼)
https://musma.github.io/2019/11/05/about-aws-iam-policy.html