配置 API
1.0 版引入
配置 API 提供对管理、验证和升级安全插件配置组件的编程访问。这些 API 有助于确保您的安全设置在 OpenSearch 集群演进过程中保持兼容和有效。
在以下场景中,安全配置可能需要更新:
- 升级到新版本的 OpenSearch 或安全插件
- 启用需要更新设置的新功能
- 在不同环境之间迁移配置
- 排查安全问题
何时使用
使用配置 API 执行以下操作:
- 识别过时或不兼容的配置组件。
- 执行自动升级以保持兼容性。
- 验证安全配置的结构和完整性。
- 管理安全设置的版本控制。
可用 API
-
升级检查 API:检查您当前的配置与 OpenSearch 版本的兼容性,并识别需要升级的组件。
-
执行升级 API:根据升级检查 API 的结果,对安全配置应用更新。
-
更新安全配置 API:创建或更新安全配置。
-
修补安全配置 API:更新安全配置的特定字段,而无需替换整个配置文档。
-
获取安全配置 API:检索当前安全配置。
authc
在配置认证域 (authc
) 时,您需要定义 OpenSearch 如何从认证响应中提取用户信息和后端角色。这在与 SAML、OIDC 或自定义认证后端等外部系统集成时尤为重要。
为了支持角色映射,请使用以下配置键:
subject_key
:指定在认证响应中查找用户标识符的位置roles_key
:指示在认证响应中查找后端角色的位置
OpenSearch 在角色映射中使用提取的后端角色来为用户分配角色。
以下示例展示了如何配置认证域,以从 JWT 令牌中的 "preferred_username"
提取用户名,并从 "groups"
提取后端角色:
{
"authc": {
"oidc_auth_domain": {
"http_enabled": true,
"transport_enabled": false,
"order": 1,
"http_authenticator": {
"type": "openid",
"challenge": false,
"config": {
"subject_key": "preferred_username",
"roles_key": "groups",
"openid_connect_url": "https://identity.example.com/.well-known/openid-configuration"
}
},
"authentication_backend": {
"type": "noop",
"config": {}
}
}
}
}
然后,您可以在角色映射中使用提取的后端角色。以下配置将 analyst_role
分配给认证响应中包含 analyst_group
或 data_scientist_group
的用户:
{
"role_mappings": {
"analyst_role": {
"backend_roles": ["analyst_group", "data_scientist_group"]
}
}
}
authz
authz
部分通过从 LDAP 等外部源检索后端角色来处理授权。这使得 OpenSearch 可以通过一种方法(例如,基本认证或 SAML)认证用户,并根据存储在独立目录中的角色信息对用户进行授权。
典型的 authz
配置包括以下元素:
roles_search_filter
:用于查找用户角色的 LDAP 搜索过滤器rolebase
:用于搜索角色的专有名称 (DN)rolesearch
:查找角色时使用的搜索模式rolename
:包含角色名称的属性
此设置在身份在一个系统中管理而角色在另一个系统中管理的企业环境中非常有用。
以下示例连接到 LDAP 目录,使用 rolesearch
过滤器查找用户组,并使用 rolename
属性将每个组提取为后端角色:
{
"authz": {
"ldap_role_authz": {
"http_enabled": true,
"transport_enabled": true,
"authorization_backend": {
"type": "ldap",
"config": {
"rolebase": "ou=groups,dc=example,dc=com",
"rolesearch": "(uniqueMember={0})",
"rolename": "cn",
"userbase": "ou=people,dc=example,dc=com",
"usersearch": "(uid={0})",
"username_attribute": "uid"
}
}
}
}
}
以下示例展示了如何将 LDAP 组映射到 OpenSearch 角色。如果用户属于 LDAP 组 cn=analysts,ou=groups,dc=example,dc=com
,则后端角色 analysts
将被提取并映射到 data_access_role
。
{
"role_mappings": {
"data_access_role": {
"backend_roles": ["analysts", "researchers"]
}
}
}
配置组件
这些 API 管理以下配置组件:
- 角色:用户可以执行操作的权限
- 角色映射:将用户或后端角色映射到特定角色
- 操作组:用于简化角色定义的权限集合
- 内部用户:直接存储在 OpenSearch 中的用户凭证
- 租户:支持多租户的隔离工作区
- 安全配置:全局安全设置
最佳实践
使用配置 API 时,请记住以下最佳实践:
- 在进行更改之前,请务必备份您的安全配置。
- 在使用执行升级 API 之前,请运行升级检查 API。
- 在部署到生产环境之前,请在非生产环境中测试更改。
- 将这些 API 集成到您的常规升级和维护工作流中。
- 应用配置更改后验证功能。