

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ユーザーの追加とサービスアカウントの設定
<a name="add-user"></a>

## きめ細かなアクセスコントロール - 推奨事項
<a name="add-user-access-control"></a>

ユーザーは Kubernetes ユーザー名に基づいて区別されます。ユーザーの Kubernetes ユーザー名は、アクセスエントリで定義されます。2 人のユーザーが個別のユーザー名を持つようにするには、次の 2 つのオプションがあります。

1. 推奨 - 複数のヒューマンユーザーは、セッション間で保持される独自のセッション名を持っている限り、同じロールを使用できます。デフォルトでは、IAM ロールの Kubernetes ユーザー名は の形式です`arn:aws:sts::{ACCOUNT_ID}:assumed-role/{ROLE_NAME}/{SESSION_NAME}`。このデフォルトでは、ユーザーはすでにセッション名で区別されます。管理者には、ユーザーごとに一意のセッション名を適用する方法がいくつかあります。
   + SSO ログイン - SSO ログインを使用するユーザーは、デフォルトで AWS ユーザー名に関連付けられたセッション名を持ちます。
   + 中央認証情報供給サービス - エンタープライズのお客様には、ユーザーが ID を使用して認証情報を取得するために呼び出すことができる内部認証情報供給サービスがある場合があります。
   + ロールベースの適用 - 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」名前空間に限定

## プライベートスペースとパブリックスペース
<a name="add-user-spaces"></a>

「Public」とOwnerOnly」の 2 種類の共有パターンをサポートしています。AccessType」フィールドとOwnershipType」フィールドの両方がこれらの 2 つの値を使用します。
+ AccessType: パブリックスペースには名前空間内のアクセス許可を持つユーザーがアクセスできますが、OwnerOnly にはスペース作成者と管理者ユーザーのみがアクセスできます。管理者ユーザーは、次の基準で定義されます。
+ OwnershipType: パブリックスペースは、名前空間のアクセス許可を持つすべてのユーザーが変更/削除できます。OwnerOnly は、作成者または管理者によって変更/削除できます。

管理者ユーザーは、以下によって定義されます。

1. Kubernetes `system:masters` グループの一部

1. helm チャートの CLUSTER\_ADMIN\_GROUP 環境変数で定義された Kubernetes グループの一部。

ユーザーのグループは、EKS アクセスエントリを使用して設定できます。オブジェクトで仕様を設定することで、スペースを「Public」または「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
```