管理Trident保护授权和访问控制
Trident Protect使用基于角色的访问控制(Role-Based Access Control、RBAC)的Kubelnetes模型。默认情况下、Trident Protect提供单个系统命名空间及其关联的默认服务帐户。如果您的组织具有许多用户或特定的安全需求、则可以使用Trident Protect的RBAC功能更精细地控制对资源和域名称的访问。
集群管理员始终可以访问默认命名空间中的资源 trident-protect
、也可以访问所有其他命名空间中的资源。要控制对资源和应用程序的访问、您需要创建更多的名分并将资源和应用程序添加到这些名分。
请注意、任何用户都不能在默认命名空间中创建应用程序数据管理CRS trident-protect
。您需要在应用程序命名空间中创建应用程序数据管理CRS (最佳做法是、在与其关联的应用程序相同的命名空间中创建应用程序数据管理CRS)。
|
只有管理员才能访问特权Trident Protect自定义资源对象、其中包括:
作为最佳实践、请使用RBAC限制管理员对有权限的对象的访问。 |
有关RBAC如何控制对资源和称表的访问的详细信息,请参阅 "Kubbernetes RBAC文档"。
有关服务帐户的信息,请参见 "Kubbernetes服务帐户文档"。
示例:管理两组用户的访问权限
例如、一个组织有一个集群管理员、一组工程用户和一组营销用户。集群管理员应完成以下任务、以创建一个环境、在此环境中、工程组和营销组各自只能访问分配给各自命名区域的资源。
第1步:创建一个命名空间以包含每个组的资源
通过创建命名空间、您可以从逻辑上分离资源、并更好地控制谁有权访问这些资源。
-
为工程组创建命名空间:
-
为营销组创建命名空间:
第2步:创建新的服务帐户、以便与每个命名空间中的资源进行交互
您创建的每个新命名空间都会附带一个默认服务帐户、但您应为每组用户创建一个服务帐户、以便将来根据需要在各个组之间进一步划分Privileges。
-
为工程组创建服务帐户:
-
为营销组创建服务帐户:
第3步:为每个新服务帐户创建一个密钥
服务帐户密钥用于向服务帐户进行身份验证、如果泄露、可以轻松删除和重新创建。
-
为工程服务帐户创建一个密钥:
-
为营销服务帐户创建密钥:
第4步:创建RoleBinding对象以将ClusterRole对象绑定到每个新服务帐户
安装Trident Protect时会创建一个默认的ClusterRole对象。您可以通过创建和应用RoleBinding对象将此ClusterRole绑定到服务帐户。
-
将ClusterRole绑定到工程服务帐户:
-
将ClusterRole绑定到营销服务帐户:
第5步:测试权限
测试权限是否正确。
-
确认工程用户可以访问工程资源:
-
确认工程用户无法访问营销资源:
第6步:授予对AppVault对象的访问权限
要执行备份和快照等数据管理任务、集群管理员需要向各个用户授予对AppVault对象的访问权限。
-
创建并应用AppVault和机密组合YAML文件、以授予用户对AppVault的访问权限。例如、以下CR将授予用户对AppVault的访问权限
eng-user
: -
创建并应用角色CR、使集群管理员能够授予对命名空间中特定资源的访问权限。例如:
-
创建并应用RoleBinding CR以将权限绑定到用户eng-user。例如:
-
验证权限是否正确。
-
尝试检索所有名称库的AppVault对象信息:
您应看到类似于以下内容的输出:
Error from server (Forbidden): appvaults.protect.trident.netapp.io is forbidden: User "system:serviceaccount:engineering-ns:eng-user" cannot list resource "appvaults" in API group "protect.trident.netapp.io" in the namespace "trident-protect"
-
测试用户是否可以获取他们现在有权访问的AppVault信息:
您应看到类似于以下内容的输出:
yes
-
您为其授予了AppVault权限的用户应该能够使用授权的AppVault对象执行应用程序数据管理操作、并且不能访问分配的命名区之外的任何资源、也不能创建他们无权访问的新资源。