为ONTAP S3访问配置外部目录服务
从ONTAP 9.14.1开始、外部目录服务已与ONTAP S3对象存储集成。这种集成通过外部目录服务简化了用户和访问管理。
您可以为属于外部目录服务的用户组提供对ONTAP对象存储环境的访问权限。轻型目录访问协议(LDAP)是一个用于与目录服务(如Active Directory)通信的接口、这些服务为身份和访问管理(IAM)提供数据库和服务。要提供访问权限、您需要在ONTAP S3环境中配置LDAP组。配置访问权限后、组成员将有权访问ONTAP S3存储分段。有关LDAP的信息,请参见"了解如何在 ONTAP NFS SVM 上使用 LDAP 名称服务"。
您还可以将Active Directory用户组配置为快速绑定模式、以便验证用户凭据、并通过LDAP连接对第三方和开源S3应用程序进行身份验证。
在配置LDAP组并为组访问启用快速绑定模式之前、请确保满足以下要求:
-
已创建一个包含S3服务器且已启用S3的Storage VM。请参见 "为 S3 创建 SVM"。
-
已在此Storage VM中创建存储分段。请参见 "创建存储分段"。
-
已在Storage VM上配置DNS。请参阅。 "配置 DNS 服务"
-
此Storage VM上安装了LDAP服务器的自签名根证书颁发机构(CA)证书。请参阅。 "在 SVM 上安装自签名根 CA 证书"
-
LDAP客户端在SVM上配置为启用TLS。请参阅"为 ONTAP NFS 访问创建 LDAP 客户端配置"和"将 LDAP 客户端配置与 ONTAP NFS SVM 关联以获取信息"。
为LDAP配置S3访问
-
指定LDAP作为组的SVM的_name service database _、并将密码指定给LDAP:
ns-switch modify -vserver <vserver-name> -database group -sources files,ldap ns-switch modify -vserver <vserver-name> -database passwd -sources files,ldap
有关链接:https://docs NetApp.ONTAP-CLI/vserver-services-name-service-ns-switch-modify.html^的更多信息,请[`vserver services name-service ns-switch modify`参阅ONTAP命令参考。
-
使用创建对象存储分段策略语句
principal
设置为要授予访问权限的LDAP组:object-store-server bucket policy statement create -bucket <bucket-name> -effect allow -principal nasgroup/<ldap-group-name> -resource <bucket-name>, <bucket-name>/*
示例:以下示例将为创建存储分段策略语句
buck1
。此策略允许对LDAP组进行访问group1
资源(存储分段及其对象)buck1
。vserver object-store-server bucket policy add-statement -bucket buck1 -effect allow -action GetObject,PutObject,DeleteObject,ListBucket,GetBucketAcl,GetObjectAcl,ListBucketMultipartUploads,ListMultipartUploadParts, ListBucketVersions,GetObjectTagging,PutObjectTagging,DeleteObjectTagging,GetBucketVersioning,PutBucketVersioning -principal nasgroup/group1 -resource buck1, buck1/*
-
验证LDAP组中的用户
group1
能够从S3客户端执行S3操作。
使用LDAP快速绑定模式进行身份验证
-
指定LDAP作为组的SVM的_name service database _、并将密码指定给LDAP:
ns-switch modify -vserver <vserver-name> -database group -sources files,ldap ns-switch modify -vserver <vserver-name> -database passwd -sources files,ldap
有关链接:https://docs NetApp.ONTAP-CLI/vserver-services-name-service-ns-switch-modify.html^的更多信息,请[`vserver services name-service ns-switch modify`参阅ONTAP命令参考。
-
确保访问S3存储分段的LDAP用户具有存储分段策略中定义的权限。有关详细信息,请参见 "修改存储分段策略"。
-
验证LDAP组中的用户是否可以执行以下操作:
-
按以下格式在S3客户端上配置访问密钥:
"NTAPFASTBIND" + base64-encode(user-name:password)`例如: `"NTAPFASTBIND"
+ base64-encode (LDAPUser:password)、结果为
NTAPFASTBINDbGRhcHVzZXI6cGFzc3dvcmQ=
S3客户端可能会提示输入机密密钥。如果没有机密密钥、则可以输入任何至少包含16个字符的密码。 -
从用户拥有权限的S3客户端执行基本S3操作。
-
Base64 凭据
ONTAP S3的默认配置不包括HTTP、而是仅使用HTTPS和传输层安全(Transport Layer Security、TLS)连接。ONTAP可以生成自签名证书、但建议的最佳实践是使用第三方证书颁发机构(CA)提供的证书。使用CA证书时、需要在客户端应用程序和ONTAP对象存储服务器之间创建受信任关系。
请注意、使用Base64编码的凭据很容易解码。使用HTTPS可以防止中间人数据包发现器捕获编码凭据。
创建预签名URL时、请勿使用LDAP快速绑定模式进行身份验证。身份验证仅基于预签名URL中包含的Base64访问密钥。将向解码Base64访问密钥的任何人显示用户名和密码。
例如、身份验证方法为nsswitch、已启用LDAP
$curl -siku <user>:<user_password> -X POST https://<LIF_IP_Address>/api/protocols/s3/services/<SVM_UUID>/users -d {"comment":"<S3_user_name>", "name":<user>,"key_time_to_live":"PT6H3M"}
|
将API定向到集群管理LIF、而不是SVM的数据LIF。如果要允许用户生成自己的密钥、则必须向其角色添加HTTP权限才能使用CURL。此权限是对S3 API权限的补充。 |
为 Active Directory 或 SMB 服务器配置 S3 访问
如果在b分 段策略语句中指定的鼻组或属于鼻组的用户未设置UID和GID、则在未找到这些属性时、查找将失败。Active Directory使用SID、而不是UID。如果SID条目无法映射到UID、则需要将必要的数据提供给ONTAP。
为此、请使用"Vserver active-directory create"、以便SVM可以向Active Directory进行身份验证并获取所需的用户和组信息。
或者、使用"创建Vserver CIFS"在Active Directory域中创建SMB服务器。
如果名称服务器和对象存储使用不同的域名,则可能会遇到查找失败的情况。为避免查找失败, NetApp建议使用 UPN 格式的受信任域进行资源授权: `nasgroup/group@trusted_domain.com`受信任域是指已添加到 SMB 服务器受信任域列表中的域。了解如何"添加、删除和修改首选信任域"在 SMB 服务器列表中。
当身份验证方法为domain且在Active Directory中配置了受信任域时、生成密钥
对以UPN格式指定的用户使用 s3/services/<svm_uuid>/users
端点。示例:
$curl -siku FQDN\\user:<user_password> -X POST https://<LIF_IP_Address>/api/protocols/s3/services/<SVM_UUID>/users -d {"comment":"<S3_user_name>", "name":<user@fqdn>,"key_time_to_live":"PT6H3M"}
|
将API定向到集群管理LIF、而不是SVM的数据LIF。如果要允许用户生成自己的密钥、则必须向其角色添加HTTP权限才能使用CURL。此权限是对S3 API权限的补充。 |
当身份验证方法为domain且不存在受信任域时、生成密钥
如果禁用了LDAP或非POSIX用户未配置UID和GID、则可以执行此操作。示例:
$curl -siku FQDN\\user:<user_password> -X POST https://<LIF_IP_Address>/api/protocols/s3/services/<SVM_UUID>/users -d {"comment":"<S3_user_name>", "name":<user[@fqdn]>,"key_time_to_live":"PT6H3M"}
|
将API定向到集群管理LIF、而不是SVM的数据LIF。如果要允许用户生成自己的密钥、则必须向其角色添加HTTP权限才能使用CURL。此权限是对S3 API权限的补充。只有在不存在受信任域的情况下、才需要向用户名添加可选域值(@FQDN)。 |