Athenz 是一个基于角色的身份验证/授权系统。 In Pulsar, you can use Athenz role tokens (also known as z-tokens) to establish the identify of the client.
Athenz 身份验证设置
A decentralized Athenz system contains an authoriZation Management System (ZMS) server and an authoriZation Token System (ZTS) server.
首先,你需要设置 Athenz 的服务访问控制。 You need to create domains for the provider (which provides some resources to other services with some authentication/authorization policies) and the tenant (which is provisioned to access some resources in a provider). 在这种情况下,供应商与 Pulsar 服务本身相对应,租户与使用 Pulsar 的每个应用程序相对应(通常情况下)。 Pulsar 租户 )。
创建租户域和服务
On the tenant side, you need to do the following things:
- 创建一个域名,如
购物
- 生成私钥/公钥对
- 使用公钥在域上创建服务,例如
some _app
请注意,当 Pulsar 客户端连接到 broker 时,需要指定步骤2 生成的私钥(参见 Java 和 C++ 的客户端配置示例。
关于涉及 Athenz UI 的更多具体步骤,请参阅 示例服务访问控制设置。
创建提供商域并将租户服务添加到某些角色成员
On the provider side, you need to do the following things:
- 创建一个域名,例如
pulsar
- 创建角色
- 将租户服务添加到角色成员
请注意,你可以在步骤2中指定任何动作和资源,因为它们不在 Pulsar上使用。 In other words, Pulsar uses the Athenz role token only for authentication, not for authorization.
关于更多涉及 UI 的具体步骤,请参阅 示例服务访问控制设置。
配置 Athenz 的 broker
TLS 加密
注意当你使用 Athenz 作为认证提供者时, 可以更好地使用 TLS 加密 ,因为它可以保护角色令牌不被拦截和重新使用。 (更多关于 TLS 编码的详细信息见 架构-数据模型)。
在 conf/broker.onf
中,你的 Pulsar 安装的配置文件,需要提供 Athenz 身份验证提供者的类名以及一个逗号分隔的提供者域名列表。
# Add the Athenz auth provider
authenticationEnabled=true
authorizationEnabled=true
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderAthenz
athenzDomainNames=pulsar
# Enable TLS
tlsEnabled=true
tlsCertificateFilePath=/path/to/broker-cert.pem
tlsKeyFilePath=/path/to/broker-key.pem
# Authentication settings of the broker itself. Used when the broker connects to other brokers, either in same or other clusters
brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationAthenz
brokerClientAuthenticationParameters={"tenantDomain":"shopping","tenantService":"some_app","providerDomain":"pulsar","privateKey":"file:///path/to/private.pem","keyId":"v1"}
在
conf/broker中可以找到完整的参数列表.onf
文件,你也可以在 Broker 配置 中找到这些参数的默认值。
配置 Athenz 客户端
关于使用 Athenz 的 Pulsar 客户端身份验证的更多信息,请参阅以下针对语言的文件:
配置 Athenz 的 CLI 工具
命令行工具 pulsar-admin
, pulsar-perf
pulsar-client
使用 conf/client. onf
配置文件在 Pulsar 安装中。
你需要将以下验证参数添加到 conf/client.conff
配置文件以使用 Athenz 的 Pulsar 的 CLI 工具:
# URL for the broker
serviceUrl=https://broker.example.com:8443/
# Set Athenz auth plugin and its parameters
authPlugin=org.apache.pulsar.client.impl.auth.AuthenticationAthenz
authParams={"tenantDomain":"shopping","tenantService":"some_app","providerDomain":"pulsar","privateKey":"file:///path/to/private.pem","keyId":"v1"}
# Enable TLS
useTls=true
tlsAllowInsecureConnection=false
tlsTrustCertsFilePath=/path/to/cacert.pem