SnapDiff 的身份验证流程是什么?
适用于
- ONTAP
- SnapDiff
问题解答
- NetApp SnapDiff 备份使用标准用户级用户名和密码认证,通过 HTTP 或 HTTPS 连接到 ONTAP 存储系统,或者可以使用 REST API 进行 Snapdiff v3 操作,这些操作通过在 ONTAP 系统本身上配置 Web 访问来启用
- 特定用户需要在 ONTAP 内拥有访问 SnapDiff 功能的相应权限,并且连接应使用 TLS/HTTPS 以实现传输中数据加密
- 要在 NetApp ONTAP 系统上授权并使用 SnapDiff v3 API,您需要按照几个关键步骤进行,包括用户创建、角色分配以及启用必要的服务。以下是分步指南:
- 创建具有 SnapDiff 权限的角色
- 您需要创建一个自定义角色,以允许访问 SnapDiff 及相关命令:
::>security login role create -vserver <SVM_NAME> -role snapdiff_role -cmddirname "snapdiff" -access all
::>security login role create -vserver <SVM_NAME> -role snapdiff_role -cmddirname "license" -access all
- 创建 SnapDiff 访问用户
- 创建将通过 HTTP(REST API)进行身份验证的用户:
::>security login create -vserver <SVM_NAME> -user-or-group-name snapdiff_user -application http -authentication-method ::>password -role snapdiff_role
- 将 <SVM_NAME> 替换为您的 Storage Virtual Machine 名称
- 系统将提示您设置 snapdiff_user 的密码
- 启用 HTTP/HTTPS 访问
- 确保在 SVM 上启用了 HTTP 或 HTTPS:
::>system services web show
- 如果未启用,您可以启用它:
::>system services web modify -name http -enabled true
::>system services web modify -name ssl -enabled true
- 此外,请确保已安装有效的 SSL 证书并绑定到 SVM
- 验证 LIF 和服务策略
- 确保用于 SnapDiff 的逻辑接口(LIF)具有包含以下内容的服务策略:
data-nfs
management- https
- 您可以使用以下方式检查和修改服务策略:
::>network interface service-policy show
- 使用 SnapDiff v3 API
- 创建用户并启用服务后,您可以使用基本 HTTP 身份验证进行身份验证:
Endpoint: https://<cluster_or_svm>/api/snapdiff/
Auth: Basic Auth with snapdiff_user and password
Headers:
- http 不完全支持。语法突出显示基于 Shell
Authorization: Basic <base64_encoded_credentials>
Content-Type: application/json
- 您可以使用 curl 或 Postman 进行测试:
curl -u snapdiff_user:password -k https://<cluster_or_svm>/api/snapdiff/volumes
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SnapDiff v3 API 通过发送包含 HTTP 请求标头中的用户名和密码的 Base64 编码字符串来进行基本身份验证。以下是它的逐步运作方式:
- 凭据格式:
- 将用户名和密码与冒号 (:) 组合:
snapdiff_user:your_password
- Base64 编码:
Encode the string above using Base64. For example:
snapdiff_user:your_password → c25hcGRpZmZfdXNlcjp5b3VyX3Bhc3N3b3Jk
- 在 HTTP 请求标头中包含编码字符串:
- 安全注意事项
- 始终使用 HTTPS 加密凭据传输过程中的凭据。
- 避免在脚本中对凭据进行硬编码或以明文形式存储它们
- 如果您的环境支持,请考虑使用 OAuth 2.0 或基于证书的身份验证以获得更好的安全性
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- SnapDiff v3 API 在 NetApp ONTAP 中使用基于证书的身份验证通过用客户端证书替换基于密码的登录来增强安全性
- 而不是发送用户名和密码,客户端在 SSL 握手期间提供数字证书。ONTAP 根据其受信任的证书颁发机构 (CA) 验证此证书,并在证书与配置的用户匹配时授予访问权限
- 以下是其工作原理以及设置方法:
- 设置基于证书的身份验证的步骤
- 生成客户端证书
- 使用 OpenSSL 创建证书和私钥:
openssl req -x509 -nodes -days 1095 -newkey rsa:2048 \
-keyout test.key -out test.pem \
-subj "/C=IN/ST=KA/L=Bangalore/O=YourOrg/CN=cert_user"
test.pem: Public certificate
test.key: Private key
CN=cert_user: Must match the ONTAP user ID
- 在 ONTAP 中安装证书
::> security certificate install -type client-ca -vserver <SVM_NAME>
- 出现提示时,粘贴 test.pem 的内容。
- 启用 SSL 并创建用户
::> security ssl modify -vserver <SVM_NAME> -client-enabled true
security login create -vserver <SVM_NAME> \
-user-or-group-name cert_user \
-application http \
-authmethod cert \
-role snapdiff_role
- 确保 snapDiff_role 有权访问 SnapDiff API
- 使用证书进行 API 调用
- 使用 curl 或任何支持客户端证书的 REST 客户端:
curl -k --cert ./test.pem --key ./test.key \
-X GET " https://<cluster_or_svm>/api/snapdiff/volumes"
-k: Skips certificate verification (use only in testing)
--cert and --key: Provide the client certificate and key
- 重要注意事项
- 可以对生产环境使用 CA 签名的证书 1
- HTTP、ontapi 和 REST 应用程序支持证书身份验证 2
- 确保 SVM 已安装有效的 SSL 证书并已启用 HTTPS。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 使用 OAuth 2.0 的 Snapdiff V3 身份验证是行业标准的授权协议。在 ONTAP 中,它使 REST API 客户端(如使用 SnapDiff v3 的备份应用程序)能够使用受信任的授权服务器(例如 Azure AD、Auth0、Keycloak)颁发的访问令牌进行身份验证
- 为 SnapDiff v3 设置 OAuth 2.0 的步骤
- 准备授权服务器
- 选择符合 OAuth 2.0 的提供程序(例如 Microsoft Entra ID、Auth0、ADFS、Keycloak)
- 确保它支持 JWT(JSON Web Tokens)并公开 JWKS URI(JSON Web Key Set)
- 安装授权服务器的根 CA 证书
- 这允许 ONTAP 信任由您的提供程序签名的令牌
- CLI 示例:
security certificate install -type server-ca
- 出现提示时粘贴证书内容
- 在 ONTAP 中定义授权服务器
- CLI 示例:
security oauth2 client create \
-config-name my_oauth_config \
-provider-jwks-uri https://<auth_server>/jwks \
-application http \
-issuer https://<auth_server>/issuer
- 这告诉 ONTAP 如何验证来自您的提供商的令牌
- 创建 REST 角色并将其映射到令牌声明
- 在 ONTAP 中定义与令牌中的作用域或组声明匹配的角色
- 您可以使用自包含的作用域或外部组映射(例如,AD 组)
::>security login rest-role create -role snapdiff_role -cmddirname "snapdiff" -access all
- 备份应用程序或脚本必须:
- 与 OAuth 提供程序进行身份验证
- 请求具有正确范围的令牌
- 在 API 请求中包含令牌: