

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 사용자 추가 및 서비스 계정 설정
<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 사용자가 `aws:username`에서 IAM 역할을 수임할 때를 역할 세션 이름으로 설정해야 합니다 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>

“퍼블릭”과 “OwnerOnly”이라는 두 가지 유형의 공유 패턴을 지원합니다. “AccessType” 및 “OwnershipType” 필드 모두이 두 값을 사용합니다.
+ AccessType: 네임스페이스에 권한이 있는 사람은 누구나 퍼블릭 스페이스에 액세스할 수 있으며, OwnerOnly는 스페이스 생성자와 관리자만 액세스할 수 있습니다. 관리자 사용자는 다음 기준으로 정의됩니다.
+ OwnershipType: 네임스페이스에 권한이 있는 사람은 누구나 퍼블릭 스페이스를 수정/삭제할 수 있으며, 생성자 또는 관리자가 OwnerOnly를 수정/삭제할 수 있습니다.

관리자 사용자는 다음과 같이 정의됩니다.

1. `system:masters` Kubernetes 그룹의 일부

1. helm 차트의 CLUSTER\$1ADMIN\$1GROUP 환경 변수에 정의된 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
```