AIDE REST API 的身份验证和授权
在将 ONTAP REST API 与 AIDE 扩展结合使用之前,您应该了解身份验证和授权的选项。
ONTAP REST API 身份验证选项
ONTAP REST API 支持两种主要的身份验证技术。
- 基本身份验证
-
基本身份验证是一种简单的技术,定义为 HTTP 协议的一部分。通过基本身份验证,您可以在 API 调用的 Authorization 标头中提供用户名和密码(在 base64 中组合并编码)。不建议将其与 AIDE REST API 一起使用,但仍然可以与现有的 ONTAP API 调用一起使用。
- OAuth 2.0 身份验证
-
从 9.14.1 开始,ONTAP 还支持 OAuth 2.0。这是一个更安全、更灵活的身份验证框架。使用 OAuth 2.0 时,需要从外部身份提供程序 (IdP) 请求访问令牌,并将其包含在每个 HTTP 请求中。
AI Data Engine 和 OpenID Connect
OpenID Connect (OIDC) 基于 OAuth 2.0 构建,在验证用户和应用程序时提供安全和标准化的选项。访问 AIDE 功能和相关数据计算节点服务需要 OIDC。在您 "在 ONTAP 中为 AIDE 配置 OpenID Connect" 之后,对 ONTAP System Manager 和开箱 Swagger 页面的访问将受到 OIDC 身份验证的保护。
在 ONTAP System Manager 中配置 OIDC 时,会自动启用 OAuth 2.0 并创建 OAuth 2.0 客户端。然后,您可以通过 IdP 的 token_endpoint 获取访问令牌,这通常可以从 IdP 元数据 URI 确定。访问令牌需要包含在 API 调用的 Authorization 标头中,以验证和授权对 AIDE 资源的访问。
对 ONTAP RBAC 实施的增强
对 AIDE REST API 的访问使用 ONTAP 的基于角色的访问控制 (RBAC) 框架进行保护。用户必须在 ONTAP 中分配适当的角色和权限,才能访问 AIDE 资源并通过 REST API 执行操作。
还有两个额外的 ONTAP 角色支持 AIDE。在 IdP 中定义的等效外部角色需要映射到这些 ONTAP 角色,以提供对 AIDE 资源的必要访问权限。
|
|
除了两个新的 ONTAP 角色之外,您还需要将外部存储管理员角色映射到现有的 ONTAP admin 角色。有关详细信息,请参见 "AI Data Engine 组件和基于角色的交互" 和 "在 ONTAP 中为 AIDE 配置 OpenID Connect"。
|
- 数据工程师
-
这是 AIDE Data Engineer 的预定义 ONTAP 管理角色。它仅限制对执行 AIDE 数据工程任务所需的端点以及相应的 CLI 命令目录的访问,包括处理工作区和数据收集、查看作业以及在允许的情况下使用文件预览。
- 数据科学家
-
这是 AIDE Data Scientist 的第二个预定义 ONTAP 管理角色。它同样仅限制对 AIDE 数据科学家工作流所需的 REST API 和相应 CLI 命令目录的访问。
获取访问令牌
您需要获取访问令牌才能与 REST API 调用一起使用。令牌请求在 ONTAP 外部执行,确切的过程取决于授权服务器及其配置。您可以通过 Web 浏览器、使用 curl 命令或使用编程语言请求令牌。为便于说明,提供了如何使用 curl 从 Microsoft Entra ID 请求访问令牌的示例。
请注意以下事项:
-
必须为启用了 AIDE 的集群"在 ONTAP 中为 AIDE 配置 OpenID Connect"。
-
确定您的 IdP
token_endpoint,通常可通过 OIDC 元数据 URI 获得。 -
根据您的 IdP 查找配置的相应值,例如 CLIENT_ID。
-
TENANT_ID、CLIENT_ID 和 CLIENT_SECRET 等配置参数采用 UUID 格式。USERNAME 和 PASSWORD 是纯文本凭据。
-
您可以选择在 Bash shell 中定义变量值,以便与 curl 命令一起使用。
-
在本地工作站的命令行界面上发出以下命令,根据您的环境为变量提供值:
curl --location "https://login.microsoftonline.com/$TENANT_ID/oauth2/v2.0/token" \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode "grant_type=password" \ --data-urlencode "client_id=$CLIENT_ID" \ --data-urlencode "client_secret=$CLIENT_SECRET" \ --data-urlencode "scope=$SCOPE/.default" \ --data-urlencode "username=$USERNAME" \ --data-urlencode "password=$PASSWORD" -
查看响应并提取用于 REST API 调用的访问令牌。