권한 관리
권한 관리 (Managing permissions)
Pulsar는 사용자에게 네임스페이스 수준 또는 토픽 수준 권한을 부여할 수 있게 해줘요. 네임스페이스 수준 권한을 부여받은 사용자는 그 네임스페이스 아래 모든 토픽에 접근할 수 있고, 토픽 수준 권한을 부여받은 사용자는 해당 토픽에만 접근할 수 있어요. 이 페이지에서는 네임스페이스 수준 권한 부여·조회·철회 방법을 정리했어요.
출처: 문서
본문
tip
이 페이지는 자주 사용하는 일부 작업만 보여줘요.
- Pulsar admin 명령, 플래그, 설명 등 최신·전체 정보는 Pulsar admin docs를 참고해요.
- REST API 파라미터, 응답, 샘플 등 최신·전체 정보는 REST API doc을 참고해요.
- Java admin API 클래스, 메서드, 설명 등 최신·전체 정보는 Java admin API doc을 참고해요.
Pulsar는 사용자에게 네임스페이스 수준 또는 토픽 수준 권한을 부여할 수 있게 해줘요.
- 사용자에게 네임스페이스 수준 권한을 부여하면 그 사용자는 네임스페이스 아래 모든 토픽에 접근할 수 있어요.
- 사용자에게 토픽 수준 권한을 부여하면 그 사용자는 해당 토픽에만 접근할 수 있어요.
아래 장들은 사용자에게 네임스페이스 수준 권한을 부여하는 방법을 보여줘요. 사용자에게 토픽 수준 권한을 부여하는 방법은 manage topics를 참고해요.
권한 부여 (Grant permissions)
produce, consume 같은 연산 목록에 대해 특정 역할(role)에 권한을 부여할 수 있어요.
pulsar-admin · REST API · Java
grant-permission 하위 명령에 네임스페이스, --actions 플래그로 연산, --role 플래그로 역할을 지정해요.
pulsar-admin namespaces grant-permission test-tenant/namespace1 \
--actions produce,consume \
--role admin10
broker.conf에서 authorizationAllowWildcardsMatching이 true로 설정되면 와일드카드 인증을 수행할 수 있어요.
예제:
pulsar-admin namespaces grant-permission test-tenant/namespace1 \
--actions produce,consume \
--role 'my.role.*'
그러면 my.role.1, my.role.2, my.role.foo, my.role.bar 등의 역할이 produce와 consume을 할 수 있어요.
pulsar-admin namespaces grant-permission test-tenant/namespace1 \
--actions produce,consume \
--role '*.role.my'
그러면 1.role.my, 2.role.my, foo.role.my, bar.role.my 등의 역할이 produce와 consume을 할 수 있어요.
note
와일드카드 매칭은 역할 이름의 시작 또는 끝에서만 동작해요.
예제:
pulsar-admin namespaces grant-permission test-tenant/namespace1 \
--actions produce,consume \
--role 'my.*.role'
이 경우 my.*.role 역할만 권한을 가져요. my.1.role, my.2.role, my.foo.role, my.bar.role 등의 역할은 produce와 consume을 할 수 없어요.
REST API: POST /admin/v2/namespaces/{tenant}/{namespace}/permissions/{role}
Java
admin.namespaces().grantPermissionOnNamespace(namespace, role, getAuthActions(actions));
권한 가져오기 (Get permissions)
네임스페이스에서 어떤 역할에 어떤 권한이 부여되었는지 확인할 수 있어요.
pulsar-admin · REST API · Java
permissions 하위 명령에 네임스페이스를 지정해요.
pulsar-admin namespaces permissions test-tenant/namespace1
예시 출력:
my.role.* [produce, consume]
REST API: GET /admin/v2/namespaces/{tenant}/{namespace}/permissions
Java
admin.namespaces().getPermissions(namespace);
권한 철회 (Revoke permissions)
특정 역할에서 권한을 철회할 수 있어요. 그 역할은 지정된 네임스페이스에 더 이상 접근할 수 없게 돼요.
pulsar-admin · REST API · Java
revoke-permission 하위 명령에 네임스페이스와 --role 플래그로 역할을 지정해요.
pulsar-admin namespaces revoke-permission test-tenant/namespace1 \
--role admin10
REST API: DELETE /admin/v2/namespaces/{tenant}/{namespace}/permissions/{role}
Java
admin.namespaces().revokePermissionsOnNamespace(namespace, role);
더 알아보기 (Learn more)
- 토픽 수준 권한 부여 방법은 manage topics 문서를 참고해요.
- 네임스페이스 관련 전체 명령은 pulsar-admin의 namespaces 명령 참고서를 확인해요.
- REST API 엔드포인트 상세는
/admin/v2/namespaces문서를 참고해요. - 인증·권한 부여의 전체 개념이 궁금하다면 인증 및 권한 부여 문서를 참고해요.