관리 그룹 필터링

관리 그룹 필터링 (Filter managed groups)

이 페이지는 OIDC 또는 LDAP 관리 그룹(managed groups)에서 필터를 사용하는 방법을 설명해요. Boundary의 일반적인 필터 구문과 OpenID Connect 또는 LDAP에 익숙하다고 가정해요.

출처: HashiCorp Boundary docs

본문

Boundary의 필터 구문과 모범 사례에 대한 자세한 내용은 리소스 필터링 및 나열을 참고해요.

관리 그룹 필터를 구성하기 전에 OIDC 또는 LDAP 인증 메서드를 구성해야 해요. 하나를 설정하려면 OIDC 인증 구성 또는 LDAP 인증 구성을 참고해요.

OIDC 필터

현재 OIDC 필터에 사용할 수 있는 데이터 블록은 두 가지예요.

  • /token/<claims> — OIDC IdP(Identity Provider)가 반환한 JSON 웹 토큰(JWT)의 claims를 포함해요. 예를 들어 /token/sub는 토큰의 "sub" claim이에요.
  • /userinfo/<claims> — UserInfo 엔드포인트의 claims를 포함해요.

OIDC 예시

claims의 구체적 내용은 OIDC 사양의 일부인 claims를 제외하고 IdP마다 고유해요. 이 섹션에서는 샘플 claims를 사용한 몇 가지 예시를 제공해요. IdP별 구체적 구문은 IdP 문서를 참고해요.

예시 JWT claims:

{
  "iss": "https://server.example.com",
  "sub": "24400320",
  "aud": "s6BhdRkqt3",
  "nonce": "n-0S6_WzA2Mj",
  "exp": 1311281970,
  "iat": 1311280970,
  "auth_time": 1311280969,
  "custom": {
    "department": "infosec"
  }
}

예시 UserInfo claims:

{
  "roles": ["user", "operator"],
  "sub": "[email protected]",
  "email": "[email protected]",
  "name": "Alice of Wonderland"
}

다음은 필터에서 이 값들을 사용하는 몇 가지 예시예요.

  • "operator" in "/userinfo/roles" — UserInfo가 반환한 roles에 "operator"가 있는 사용자(예: Alice)와 일치해요.
  • "/token/custom/department" == "infosec" or "/token/custom/department" == "ops" — ops 또는 infosec 부서에 있는 사용자(예: Alice)와 일치해요.

OIDC 관리 그룹 생성 (Create an OIDC managed group)

managed-groups create oidc 명령을 -filter 플래그와 함께 사용해서 관리 그룹을 만들어요.

$ boundary managed-groups create oidc \
  -auth-method-id $OIDC_AUTH_METHOD_ID \
  -name "operators" \
  -filter='"operator" in "/userinfo/roles"'

Boundary는 사용자가 인증 메서드를 사용해 인증할 때마다 관리 그룹 구성원 자격을 다시 평가해요.

LDAP 관리 그룹 (LDAP managed groups)

구성원 자격은 LDAP 그룹 이름을 LDAP 계정의 연결된 그룹과 일치시켜 결정돼요. 인증할 때마다 그룹 구성원 자격 비교가 업데이트돼요.

관리 그룹을 활성화하려면 LDAP 인증 메서드의 enable_groups 속성을 true로 설정하고, group_dn, group_attr, 또는 group_filter 속성을 디렉터리 스키마 구조에 맞게 구성해요. 이 속성들의 정의는 Auth method 도메인 모델 항목에서, 설정 단계는 LDAP 인증 구성에서 확인할 수 있어요.

인증 메서드에서 그룹을 활성화한 후 관리 그룹 구성원 자격은 관리 그룹 자체의 group-names 속성의 목록으로 정의돼요.

$ boundary managed-groups create ldap \
  -auth-method-id $LDAP_AUTH_METHOD_ID \
  -name "mathematicians" \
  -group-names "Mathematicians"

LDAP 예시

디렉터리 스키마는 구현에 따라 달라질 수 있어요. 이 섹션에서는 ForumSystems가 제공한 온라인 LDAP 테스트 서버에 선언된 스키마를 사용한 몇 가지 예시를 제공해요. 구체적이고 정확한 구문은 디렉터리 스키마를 참고해요.

LDAP 서버 정보(읽기 전용 접근):

  • 서버: ldap.forumsys.com
  • 포트: 389
  • 바인드 DN: cn=read-only-admin,dc=example,dc=com
  • 바인드 비밀번호: password

모든 사용자 비밀번호는 password예요. 개별 사용자(uid) 또는 다음 두 그룹(ou)에 바인드할 수도 있어요.

Mathematicians: ou=mathematicians,dc=example,dc=com — riemann, gauss, euler, euclid

Scientists: ou=scientists,dc=example,dc=com — einstein, newton, galieleo, tesla

예시 LDAP 인증 메서드 속성:

Attributes:
  bind_dn:              cn=read-only-admin,dc=example,dc=com
  bind_password_hmac:   IC29KNPDTPC57nc2aT9UFthOh4Kh1i3660_euBsgL7Y
  enable_groups:        true
  group_dn:             dc=example,dc=com
  state:                active-public
  urls:                 [ldap://ldap.forumsys.com]
  user_attr:            uid
  user_dn:              dc=example,dc=com

이 예시에서는 LDAP 인증 메서드에 다음 속성이 설정돼요.

  • urls: "ldap://ldap.forumsys.com"
  • bind-dn: "cn=read-only-admin,dc=example,dc=com"
  • bind-password: file://bind-pass.txt (Terraform을 사용하면 직접 전달)
  • user-dn: "dc=example,dc=com"
  • user-attr: "uid"
  • group-dn: "dc=example,dc=com"

예시 관리 그룹 속성:

Attributes:
  group_names:       [Mathematicians]

이 예시에서는 관리 그룹에 다음 속성이 설정돼요.

  • group-names: "Mathematicians"

더 알아보기 (Learn more)