

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 添加用户并设置服务帐号
<a name="add-user"></a>

## 精细的访问控制——我们的建议
<a name="add-user-access-control"></a>

根据用户的 Kubernetes 用户名进行区分。用户的 Kubernetes 用户名在其访问条目中定义。为确保两个人类用户具有不同的用户名，有两种选择：

1. 推荐-多个人类用户可以使用同一个角色，前提是每个用户都有自己的不同会话名称，且该名称将在会话之间保留。默认情况下，IAM 角色的 Kubernetes 用户名采用以下格式。`arn:aws:sts::{ACCOUNT_ID}:assumed-role/{ROLE_NAME}/{SESSION_NAME}`使用此默认设置，用户将按会话名称进行区分。管理员有几种方法可以为每个用户强制使用唯一的会话名称。
   + SSO 登录-默认情况下，使用 SSO 登录的用户将使用与其用户名关联的会话名称 AWS 
   + 中央凭证自动售卖服务-对于企业客户，他们可能有一些内部凭证自动售货服务，用户可以拨打这些服务来获取带有其身份的证书。
   + 基于角色的强制执行-要求 IAM 用户在您的角色中担任 IAM 角色时将其`aws:username`设置为角色会话名称 AWS 账户。有关如何执行此操作的文档在这里：[https://aws.amazon.com/blogs/security/easily-control-naming-individual-iam-role-sessions/](https://aws.amazon.com/blogs/security/easily-control-naming-individual-iam-role-sessions/)

1. 如果 2 位数据科学家使用不同的访问条目（不同的 IAM 角色或用户），则他们将始终被视为不同的用户。

**创建访问条目**

数据科学家角色必需的 IAM 策略：
+ `eks:DescribeCluster`

必需的访问权限入口政策
+ `AmazonSagemakerHyperpodSpacePolicy`-范围限定为命名空间 DS 应在其中创建空间
+ `AmazonSagemakerHyperpodSpaceTemplatePolicy`-作用域为 “jupyter-k8s-shared” 命名空间
+ `AmazonSagemakerHyperpodUserClusterPolicy`-范围限定为集群

## 私人和公共空间
<a name="add-user-spaces"></a>

我们支持两种类型的共享模式：“公开” 和 “OwnerOnly”。“AccessType” 和 “OwnershipType” 字段都使用这两个值。
+ AccessType：拥有命名空间权限的任何人都可以访问公共空间，而 OwnerOnly 只有空间创建者和管理员用户才能访问。管理员用户是根据以下标准定义的：
+ OwnershipType：公共空间可以 modified/deleted 由在命名空间中拥有权限的任何人 OwnerOnly 使用，也可以 modified/deleted 由创建者或管理员创建。

管理员用户的定义是：

1. 加入 `system:masters` Kubernetes 小组

1. 在掌舵图的 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
```