使用SAML登录OpenSearch Dashboard有两种方式: SP-initiated或 IdP-initiated authentication,
Service provider (SP) initiated: 顾名思义,是从服务提供端来访问。访问Openserach Dashboard(https://my-domain.us-east-1.es.amazonaws.com/_dashboards), 然后跳转到认证页面,登录后再跳转到OpenSearch DashboardIdentity provider (IdP) initiated: 顾名思义是从认证端来访问。通过identity provider(Okta)访问并登录,然后从应用目录中选择OpenSearch Dashboards本文介绍SP-initiated 这种方式
fine-grained access control

OpenSearch Service Assertion Consumer Service(ACS)登录到Okta帐号,在Groups下面点击添加:

组的名称为OpenSearch,点击确认:

在People页面创建新的用户:

输入用户名和邮箱,Group选择之前创建的OpenSearch,点击保存:

在邮件中会收到一封邮件,点击并完成注册。
在OpenSearch中编辑安全配置:

开启SAML验证:

能看到不同的URL地址,先保持这个页面不要关闭,后面会用到:

转到okta,在Applications中创建App Integration:

选择SAML 2.0, 进入下一步:

为App Name设置为OpenSearch,进入下一步:

在SAML设置部分,使用以下值:
Single Sign on URL = https://vpc-XXXXX-XXXXX.us-west-2.es.amazonaws.com/_dashboards/_opendistro/_security/saml/acs (SP-initiated SSO URL)
Audience URI(SP Entity ID) = https://vpc-XXXXX-XXXXX.us-west-2.es.amazonaws.com (Service Provider entity ID)
Attribute Statements (optional) section.
Group Attribute Statements (optional) section.

进入下一步,选择 I’m a software vendor... ,点击finish完成创建:

创建完成后,在Sign on部分,打开Metadata URL,将XML保存下来:

在Assignments部分,选择 Assign to Groups, 选择OpenSearch这个组进行assign:

回到OpenSearch的页面,将刚才下载的XML上传:

SAML master backend role设置为OpenSearch(对应Okta的group)。role or group. This is another situation in which tools like SAML-tracer
can help.
假设有个用户叫
jdoe, 属于admins组,如果将
jdoe添加在SAML master username里,只有这个用户有所有权限。如果将
admins添加在SAML master backend role里,admins下面的用户都有所有权限。
最后保存设置,等配置生效。
访问dashboard: https://search-test-domain-zim2xr5hjkuxwtlfcscs6c6ome.us-east-1.es.amazonaws.com/_dashboards
使用Okta登录到OpenSearch Dashboard:

当前的用户自动具有all_access,这是因为之前设置了SAML master backend role:

没有用户所在的group没有被assign到,访问时会报这个错误:

如果被assign到,但不在master backend role里:

登录dashboard后,默认的role是default_role:

参考: https://docs.aws.amazon.com/OpenSearch-service/latest/developerguide/saml.html#saml-idp-with-sp