IAM 개념 정리
IAM?
IAM(Identity and Access Management)은 기업에서 적합한 사람과 디바이스가 원하는 애플리케이션과 리소스 및 시스템에 액세스할 수 있도록 허용하는 프레임워크입니다. 액세스를 효과적으로 관리하려면 먼저 사용자에 대한 신뢰 여부를 인증한 후 필요한 액세스 수준에 따라 권한을 인증해야 합니다.
인증 및 권한 인증?
인증이란 사용자의 신원이 정확한지 확인하는 프로세스입니다.
💡 주로 사용되는 인증 요소
- 알고 있는 정보: 사용자만 기억할 수 있는 지식 요소(PIN 코드 등)
- 가지고 있는 정보: 사용자만 가지고 있는 소유 요소(확인용 모바일 앱의 코드 등)
- 신체적인 정보: 사용자만 제공할 수 있는 생체 요소(지문 등)
권한 인증이란 사용자에게 특정 기능이나 리소스에 액세스할 수 있는 권한을 부여하는 프로세스입니다. 사용자가 자신에게 부여되는 권한에 따라 추가 리소스에 대한 액세스 권한을 인증 받으려면 먼저 자신의 아이덴티티를 인증해야 합니다.
일반적인 IAM 사용자
- 직원
- 계약자: 기업과 단기간 동안 혹은 단발성 프로젝트로 협력하는 개인
- 고객: 기업의 서비스를 이용하는 고객
- 파트너: 기업의 파트너
IAM에 포함되는 리소스
- 애플리케이션: 사용자가 애플리케이션에 로그인 할 때 IAM을 통해 사용자의 아이덴티티를 안전하게 보호할 수 있습니다.
- API
- 클라우드 서비스
- 기업 데이터
- 멀티 클라우드 또는 하이브리드 아키텍처
- 서버
인증(Authentication) VS 인가(Authorization)
- 인증(Authentication): 사용자의 신원을 확인하는 것입니다.
- 웹 애플리케이션에 로그인 할 때 아이디와 패스워드를 입력하거나, 휴대폰에 전달된 SMS에 적혀있는 2차 인증코드를 입력하는 것처럼 인증요소는 하나일수도 있고 두개(two-factor) 또는 그 이상(multi-factor)일 수도 있습니다.
- 인가(Authorization): 사용자가 어떤 행위를 수행할 권한을 가지고 있는지를 판별하는 것입니다.
- 웹 애플리케이션에서는 일반적으로 토큰을 사용하여 어떤 권한을 부여할지, 리소스 접근 요청을 허용할지 거부할지를 결정합니다.
- 사용자가 누구인지 판별이 되어야 그 사용자에 대한 권한을 판별할 수 있기 때문에 인가를 수행하기 위해서는 인증이 선행되어야 합니다.
용어 정의
- 주체(Subject): 인가를 받으려는 사용자
- 특정 사용자 개인이 될 수도 있고, 특정 사용자 그룹이 될 수도 있으며, 전체 사용자가 될 수도 있습니다.
- 객체(Object): 사용자가 접근하고자 하는 서비스나 자원 또는 정보
- 권한(Permission): 객체에 허용된 주체가 수행할 수 있는 행위 목록을 말합니다.
- 보통 읽기, 쓰기, 생성, 삭제, 실행, 검색 등과 같은 권한이 존재할 수 있습니다.
- 접근 제어(Access Control): 주체가 객체에 접근할 수 있는 권한이 있는지 판단하는 것입니다.
접근 제어 모델의 종류
강제적 접근 제어 모델(Mandatory Access Control, MAC)
💡 예시: 네이버 카페에서 회원 등급에 따라 접근할 수 있는 게시판과 없는 게시판을 구분하는 것
각 게시판(객체)마다 접근할 수 있는 등급이 정해져 있기 때문에 객체와 주체 사이의 권한 등급을 직접 비교하여 접근 허용 여부를 결정하는 것
- 미리 정해진 정책과 보안 등급에 의거하여 주체에게 허용된 접근 권한과 객체에 부여된 허용 등급을 비교하여 접근을 제어하는 방법입니다.
장점 | 단점 |
---|---|
중앙 집권적인 관리자에 의해 제어되기 때문에 보안성이 높은 편이어서 주로 군이나 방화벽처럼 강력한 보안이 필요한 곳에서 사용합니다. | 권한 관리 기능이 단순하고 제한적이어서 주체별로 접근 제어를 다르게 적용할 수 없으며, 모든 주체와 객체에 일일이 허용 등급을 설정 해주어야 하므로 설정이 복잡합니다. |
임의적 접근 제어 모델(Discretionary Access Control, DAC)
💡 예시: 리눅스 파일이나, 디렉토리에 대한 접근 제어 방식을 말합니다.
파일의 소유자가 그 파일에 대한 접근 제어를 설정할 수 있습니다.
- 객체에 대한 접근을 사용자나 그룹의 신분을 기준으로 제한하는 방법입니다.
- 임의적(Discretionary)라는 말은 객체 소유자의 판단에 따라 권한을 줄 수 있다는 뜻입니다.
장점 | 단점 |
---|---|
주체와 객체를 알고 있으면 어떤 권한을 가지고 있는지 바로 알아낼 수 있습니다. | 주체의 수나 객체의 수가 많아지면 쓸데없이 사용되는 메모리 공간이 많아지는 단점이 있습니다. |
역할 기반 접근 제어 모델(Role Based Access Control, RBAC)
💡 예시: 어떤 회사의 영업팀 직원은 자신의 업무 역할 범위 내에 있는 페이지에는 접근할 수 있지만, 인사팀의 인사 평가 자료에는 접근할 수 없도록 하는 것입니다.
- 사용자 개인이 아닌 역할 그룹에 권한을 부여하고, 사용자에게 역할을 할당하여 접근 제어 하는 방식입니다.
- 일반적으로 직무를 기반으로 하는 서비스에서 많이 사용 되는 접근 제어 방법입니다.
- 사용자와 역할 사이의 관계는 보통 다대다 관계이기 때문에 한 사용자가 여러 개의 역할을 부여 받을 수 있습니다.
장점 | 단점 |
---|---|
권한 관리자는 다수의 사용자에 대해 일일이 접근 권한을 관리하지 않아도 되고 적절한 역할만 부여해주면 되기 때무에 권한 관리 부담이 줄어듭니다. | 다양한 권한 요소를 고려하다 보면 권한 조건이 늘어날 때마다 역할의 개수가 과도하게 늘어날 수 있는 단점이 있습니다. |
RBAC의 하위 유형
- 레벨1 - 균일적 RBAC
- 직원들은 역할에 따라 권한을 얻습니다.
- 예시: 모든 직원이 역할을 한 가지 이상 맡고 있고, 두 가지 이상의 역할을 수행하는 직원도 있습니다.
- 레벨2 - 계층적 RBAC
- 균일적 RBAC를 기반으로, 역할의 계층 구조가 추가 되었습니다.
- 예시: 고위 경영진은 자체 권한 뿐만 아니라, 부하 직원이 획득한 권한도 갖습니다.
- 레벨3 - 제한적 RBAC
- 계층적 RBAC를 기반으로, 직무 분리가 추가 되었습니다.
- 예시: 업무의 분리가 추가되고 여러 사람이 하나의 작업을 함께 수행합니다.
- 레벨4 - 대칭적 RBAC
- 제한적 RBAC를 기반으로, 권한 검토가 추가되었습니다.
- 예시: 역할 권한이 수시로 검토 되며, 이 결과에 따라 권한이 변경됩니다.
속성 기반 접근 제어 모델(Attribute Based Access Control, ABAC)
💡 예시: 파일 A에 접근하기 위해서는 사용자의 type 속성에 admin이라는 태그가 있어야 한다.
- 객체와 주체의 속성에 대한 조건을 기술하여 접근 제어를 하는 방식입니다.
장점 | 단점 |
---|---|
시스템의 다양한 요소를 반영할 수 있기 때문에 표현력과 유연성이 좋습니다. | 큰 규모의 시스템에서는 일일이 속성을 적용하기 어렵고 각 객체 접근 마다 복잡한 속성 조건을 계산해야 하기 때문에 성능이 다소 느려질 수 있습니다. |
접근 제어 관리 시나리오
- 소규모 작업 그룹
- RBAC가 최상의 선택입니다.
- 회사 규모가 작고 파일 수가 적을 때는 작업을 역할별로 정의하는 것이 좋습니다.
- 지역이 서로 다른 작업 그룹
- ABAC를 선택해도 좋습니다.
- 직원 유형, 위치 및 업무 시간별로 액세스 권한을 정의할 수 있습니다.
- 지점에서 특정 시간대의 영업 시간 동안만 액세스를 허용할 수 있습니다.
- 시간이 정해진 작업 그룹
- ABAC를 우선적으로 선택합니다.
- 일부 중요한 문서나 시스템은 근무 시간 외에 액세스할 수 없습니다.
- 단순하게 구성된 작업 그룹
- RBAC가 최상의 선택입니다.
- 창의적인 기업
- ABAC가 가장 적합합니다.
- 특정 문서의 경우 모든 사람이 봐야 하는 경우도 있고, 소수만 봐야 하는 경우도 있습니다.
- 문서를 열람해야 하는 사람과 문서를 처리하는 방식이 복잡한 경우에는 ABAC를 사용하는 것이 가장 좋습니다.
대부분의 조직이 RBAC를 통해 상위 수준의 액세스를 수행한 다음 ABAC를 통해 해당 구조 내에서 세분화된 제어를 수행하는 하이브리드 시스템을 사용합니다.
IAM 툴과 프로세스
- SSO(Single Sign-On): 사용자가 각 앱 또는 리소스마다 일일이 로그인할 필요 없이 한 개의 자격 증명 세트를 사용해 조직의 인프라에서 자신을 안전하게 인증할 수 있게 해주는 툴입니다.
- MFA(다중 요소 인증): 기업이 사용자의 신원을 확인할 수 있게 해주는 툴입니다. 사용자는 일반적으로 지식 요소, 소유 요소 및 생체인식 요소로 구성되는 다수의 인증 요소를 제공해야 합니다.
- LCM(라이프사이클 관리): 직원, 계약자, 고객, 파트너 등 점차 늘어나는 사용자들을 더욱 쉽게 관리할 수 있게 해주는 툴입니다.
- 사용자 및 디바이스 디렉터리에 대한 중앙 관리
- 엑세스 게이트웨이
- 서버용 IAM
댓글남기기