本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
添加用户并设置服务帐号
精细的访问控制——我们的建议
根据用户的 Kubernetes 用户名进行区分。用户的 Kubernetes 用户名在其访问条目中定义。为确保两个人类用户具有不同的用户名,有两种选择:
-
推荐-多个人类用户可以使用同一个角色,前提是每个用户都有自己的不同会话名称,且该名称将在会话之间保留。默认情况下,IAM 角色的 Kubernetes 用户名采用以下格式。
arn:aws:sts::{ACCOUNT_ID}:assumed-role/{ROLE_NAME}/{SESSION_NAME}使用此默认设置,用户将已经按会话名称进行区分。管理员有几种方法可以为每个用户强制使用唯一的会话名称。-
SSO 登录-默认情况下,使用 SSO 登录的用户将使用与其用户名关联的会话名称 AWS
-
中央凭证自动售卖服务-对于企业客户,他们可能有一些内部凭证自动售货服务,用户可以拨打这些服务来获取带有其身份的证书。
-
基于角色的强制执行-要求 IAM 用户在您的角色中担任 IAM 角色时将其
aws:username设置为角色会话名称AWS 账户。有关如何执行此操作的文档在这里:s https://aws.amazon.com/blogs/ecurity/ easily-control-naming-individual-iam-role-sessions/
-
-
如果 2 位数据科学家使用不同的访问条目(不同的 IAM 角色或用户),则他们将始终被视为不同的用户。
创建访问条目
数据科学家角色必需的 IAM 策略:
-
eks:DescribeCluster
必需的访问权限入口政策
-
AmazonSagemakerHyperpodSpacePolicy-范围限定为命名空间 DS 应在其中创建空间 -
AmazonSagemakerHyperpodSpaceTemplatePolicy-作用域为 “jupyter-k8s-shared” 命名空间
私人和公共空间
我们支持两种类型的共享模式:“公开” 和 “OwnerOnly”。“AccessType” 和 “OwnershipType” 字段都使用这两个值。
-
AccessType:拥有命名空间权限的任何人都可以访问公共空间,而 OwnerOnly 只有空间创建者和管理员用户才能访问。管理员用户是根据以下标准定义的:
-
OwnershipType:公共空间可以 modified/deleted 由在命名空间中拥有权限的任何人 OwnerOnly 使用,也可以 modified/deleted 由创建者或管理员创建。
管理员用户的定义是:
-
system:mastersKubernetes 小组的一员 -
在掌舵图的 CLUSTER_ADMIN_GROUP 环境变量中定义的 Kubernetes 组的一部分。
可以使用 EKS 访问条目配置用户的群组。通过在对象中配置规范,可以将空间定义为 “公共OwnerOnly” 或 “”:
apiVersion: workspace.jupyter.org/v1alpha1 kind: Workspace metadata: labels: app.kubernetes.io/name: jupyter-k8s name: example-workspace spec: displayName: "Example Workspace" image: "public.ecr.aws/sagemaker/sagemaker-distribution:3.4.2-cpu" desiredStatus: "Running" ownershipType: "Public"/"OwnerOnly" accessType: "Public"/"OwnerOnly" # more fields here