신원 및 접근 관리(IAM)

신원 및 접근 관리(IAM)

누가 무엇에 접근할 수 있는지 통제하는 일은 팀·대상·환경이 늘어날수록 다루기 힘들어져요. Boundary의 신원 및 접근 관리(IAM) 시스템은 인증과 부여된 권한을 함께 정의하는 여섯 가지 리소스로 이 문제를 해결해요. 바로 스코프(scope), 인증 방법(auth method), 계정(account), 사용자(user), 그룹(group), 역할(role)이죠.

출처: HashiCorp Boundary docs

본문

스코프(Scopes)

스코프는 리소스와 권한의 컨테이너라고 볼 수 있어요. 각 스코프에는 같은 레벨의 다른 스코프와 격리된 권한 경계(permissions boundary)가 있어요. 스코프에는 세 가지 유형이 있습니다:

  • Global: Boundary의 최상위 스코프로, 관리자가 회사 전체를 위해 Boundary를 구성하고 관리하는 곳이에요.
  • Org(Organization): Org 스코프는 global 스코프 안에 있으며, 주로 사업 단위, 조직, 부서를 나타내는 데 쓰여요. Org 스코프는 여러 프로덕션급 인증 방법을 각각의 스코프로 나눠 담는 데도 사용할 수 있어요.
  • Project: Project 스코프는 Org 스코프 안에 있으며, 서로 다른 업무 워크플로를 분리하는 데 써요. 예를 들어 프로젝트로 다른 팀, 제품, 환경(테스트/개발/운영)을 나타낼 수 있어요.

인증 방법(Auth methods)

인증 방법은 사용자를 Boundary에 인증하는 리소스예요. 인증 방법은 global 또는 Org 스코프에만 담을 수 있어요. 만드는 방법은 "인증 구성(Configure authentication)"을 참고하세요. 사용 가능한 인증 방법은:

  • Username/Password
  • OIDC(OpenID Connect). 직접 해보는 워크스루는 OIDC 인증 튜토리얼을 참고하세요.
  • LDAP(Lightweight Directory Access Protocol)

계정(Accounts)

계정은 신뢰할 수 있는 신원 공급자에서 Boundary 인증 방법을 통해 오는, 인증된 사용자를 나타내는 리소스예요. 계정은 반드시 어떤 인증 방법에 속해야 하고, 단일 Boundary 사용자와 연결될 수 있어요. Boundary 계정은 global 또는 Org 스코프에 속할 수 있습니다.

사용자(Users)

사용자는 접근 제어를 목적으로 개인이나 개체(entity)를 나타내는 리소스예요. 사용자는 여러 인증 방법의 여러 계정을 가질 수 있고, global 또는 Org 스코프에 속할 수 있어요.

그룹(Groups)

그룹은 사용자들의 집합을 나타내는 리소스이며, 어떤 스코프에도 담을 수 있어요. 관리 그룹(managed group)은 인증 방법의 신원 공급자와 동기화되어 최신 정보를 유지하는 특별한 종류의 그룹이에요.

역할(Roles)

역할은 어떤 스코프의 주체(principal, 사용자 또는 그룹)에게 부여되는 권한의 모음인 리소스예요. 역할은 어떤 스코프에도 담을 수 있고, 권한은 같은 스코프나 어떤 하위 스코프에도 적용할 수 있어요.

접근 관리(Access management)

비밀번호 인증 방법이나 OIDC/LDAP으로 사용자를 Boundary에 추가할 수 있어요.

사용자 구성 - username/password

비밀번호 인증 방법으로 Boundary에 새 사용자를 추가하는 단계는 세 가지예요:

  1. 사용자가 Boundary에 인증하는 데 쓸 스코프와 인증 방법을 선택해요. 원하는 인증 방법이 없다면 새로 만들어야 해요.
  2. 인증 방법이 선택되면 인증 방법 아래에 계정을 만들 수 있어요.
  3. 같은 스코프에서 새 사용자를 만들고, 새 계정을 새 사용자에 연결해요. 그러면 사용자는 이제 Boundary에 인증할 수 있게 돼요.

인증 방법, 계정, 사용자를 만드는 단계별 지침은 "비밀번호 인증 구성(Configure password authentication)"을 참고하세요.

사용자 구성 - OIDC/LDAP

OIDC와 LDAP 인증 방법을 쓰면 Boundary가 신원 공급자의 데이터를 사용해 인증 방법과 같은 스코프에 계정과 사용자를 자동으로 생성해요. 계정과 사용자는 사용자가 처음으로 Boundary에 인증할 때만 만들어집니다.

OIDC/LDAP 관리 그룹에도 같은 규칙이 적용돼요.

단계별 설정은 "OIDC 인증 구성(Configure OIDC authentication)" 또는 "LDAP 인증 구성(Configure LDAP authentication)"을, 실습 워크스루는 OIDC 인증 및 OIDC 신원 공급자 그룹 튜토리얼을 참고하세요.

OIDC 속성에서 max_age를 구성해 OIDC 공급자에게 사용자가 다시 인증을 요구받기 전까지 얼마나 시간이 지나도록 허용할지 알려줄 수 있어요. 다만 사용자는 컨트롤러의 auth_token_time_to_live 구성 파라미터가 만료되기 전까지는 인증을 요구받지 않습니다. 기본값은 7일이에요.

HCP Boundary에서 시간 제한(Time to Live)을 구성하려면 "인증 시간 제한 구성(Configure authentication time to live)"을 참고하세요.

권한 부여(Grant permissions)

사용자에 대한 접근 제어를 설정할 때는 먼저 그 사용자가 어떤 스코프에 접근해야 하는지 고려하는 것이 중요해요. 역할은 그랜트 문자열(grants strings)을 통해 사용자에게 작업을 수행할 권한을 줍니다.

사용자를 역할에 직접 추가하는 대신, 사용자를 그룹에 먼저 추가하고 그 그룹을 역할에 추가하는 것을 권장해요. 이렇게 하면 여러 사용자를 동시에 관리할 수 있고, 그룹에서 추가/제거함으로써 사용자의 권한을 더 쉽게 바꿀 수 있죠. OIDC/LDAP 사용자와 관리 그룹도 공급자에서 직접 같은 방식으로 관리할 수 있어요.

페르소나별 IAM 예시

다음은 이 샘플 스코프 구조를 사용한 페르소나별 접근 관리 예시예요. 이 구조에는 총 7개의 스코프가 있는데, global 1개, Org 2개, Project 4개죠.

각 페르소나마다 나열된 스코프에 역할이 필요하고, 사용자나 그룹이 주체(principal)로 추가되며, 나열된 그랜트가 적용돼요:

페르소나 스코프 그랜트
Boundary 관리자 각각의 7개 스코프 (역할 예: "admin") ids=;type=;actions=*
Boundary 뷰어 각각의 7개 스코프 (역할 예: "viewer") ids=;type=;actions=read,list
Org_A 관리자 Org_A, Project_1, Project_2 (역할 예: "admin") ids=;type=;actions=*
Project_1 관리자 Project_1 (역할 예: "admin") ids=;type=;actions=*
Project_1 대상 접근 Project_1 (역할 예: "target_access") ids=;type=target;actions=list,read,authorize-session
ids=
;type=session;actions=read:self,cancel:self,list

스코프와 그랜트가 같으므로 "Boundary Admin", "Org_A Admin", "Project_1 Admin"에서 같은 역할을 재사용할 수 있어요. 차이는 각 역할에 추가되는 사용자/그룹뿐이죠.

더 알아보기 (Learn more)

관련 주제는 각 절에서 링크한 문서를 참고하세요.