

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

# PAM 認証の使用
<a name="emr-jupyterhub-pam-users"></a>

Amazon EMR の JupyterHub で PAM ユーザーを作成するのは 2 段階のプロセスです。最初のステップは、マスターノードで `jupyterhub` コンテナを実行しているオペレーティングシステムにユーザーを追加し、対応するユーザーのホームディレクトリに各ユーザーを追加することです。次のステップは、こうしたオペレーティングシステムのユーザーを JupyterHub ユーザーとして追加することです。このプロセスは JupyterHub でホワイトリストと呼ばれています。JupyterHub ユーザーの追加が完了すると、ユーザーは JupyterHub URL に接続して、アクセスに必要なオペレーティングシステムの認証情報を提供することができます。

ユーザーがログインすると、JupyterHub はそのユーザー用にノートブックサーバーインスタンスを開きます。これはマスターノードのユーザーのホームディレクトリ (`/var/lib/jupyter/home/username`) に保存されています。ノートブックサーバーインスタンスがない場合は、ユーザーのホームディレクトリで JupyterHub がノートブックインスタンスを生成します。次のセクションは、各ユーザーをオペレーティングシステムと JupyterHub に追加する方法や、複数のユーザーを追加する基本的な bash スクリプトを示しています。

## コンテナにオペレーティングシステムユーザーを追加する
<a name="emr-jupyterhub-system-user"></a>

次の例は、最初にコンテナ内の [useradd](https://linux.die.net/man/8/useradd) コマンドを使用して 1 人のユーザー (diego) を追加してから、そのユーザー用のホームディレクトリを作成します。2 番目のコマンドは [chpasswd](https://linux.die.net/man/8/chpasswd) を使用して、このユーザーに diego のパスワードを確立します。SSH で接続中にマスターノードコマンドラインでコマンドが実行されます。[ステップを送信して管理する](emr-jupyterhub-administer.md#emr-jupyterhub-administer-steps)で説明されているように、ステップを使用してこうしたコマンドを実行することもできます。

```
sudo docker exec jupyterhub useradd -m -s /bin/bash -N diego
sudo docker exec jupyterhub bash -c "echo diego:diego | chpasswd"
```

## JupyterHub ユーザーを追加する
<a name="emr-jupyterhub-jupyterhub-user"></a>

JupyterHub の [**Admin (管理者)**] パネルを使用するか、REST API を使用してユーザーと管理者 (またはユーザーのみ) を追加できます。

**JupyterHub の [Admin] パネルを使用してユーザーと管理者を追加する**

1. SSH を使用してマスターノードに接続し、管理者の権限を持つ ID で https://*MasterNodeDNS*:9443 にログインします。

1. [**Control Panel (コントロールパネル)**]、[**Admin (管理者)**] の順に選択します。

1. [**User (ユーザー)**] を選択し、[**Add Users (ユーザーの追加)**] または [**Admin (管理者)**]、[**Add Admins (管理者の追加)**] を選択します。

**REST API を使用してユーザーを追加する**

1. SSH を使用してマスターノードに接続し、次のコマンドをマスターノードで使用するか、コマンドをステップとして実行します。

1. 管理者トークンを取得して API リクエストを行い、次のステップで *AdminToken* をそのトークンと置き換えます。

1. 次のコマンドを使用して *UserName* をコンテナ内で作成したオペレーティングシステムユーザーと置き換えます。

   ```
   curl -XPOST -H "Authorization: token AdminToken" "https://$(hostname):9443/hub/api/users/UserName
   ```

**注記**  
JupyterHub ウェブインターフェイスに初めてログインすると、JupyterHub の非管理者ユーザーとして自動的に追加されます。

## 例: Bash スクリプトで複数のユーザーを追加する
<a name="emr-jupyterhub-script-multuser"></a>

次のサンプル bash スクリプトは、複数の JupyterHub ユーザーを作成するために行ったステップを関連付けます。スクリプトは直接マスターノードで実行したり、Amazon S3 にアップロードしてステップとして実行することができます。

スクリプトは最初にユーザー名の配列を確立し、`jupyterhub token` コマンドを使用してデフォルトの管理者 (jovyan) に API トークンを作成します。そうすると、`jupyterhub` コンテナにオペレーティングシステムユーザーを作成し、ユーザー名に対応する初期パスワードを割り当てます。最後に、REST API オペレーションを呼び出して JupyterHub で各ユーザーを作成します。以前スクリプトで生成したトークンを渡し、REST レスポンスを `jq` にパイプして見やすくします。

```
# Bulk add users to container and JupyterHub with temp password of username
set -x
USERS=(shirley diego ana richard li john mary anaya)
TOKEN=$(sudo docker exec jupyterhub /opt/conda/bin/jupyterhub token jovyan | tail -1)
for i in "${USERS[@]}"; 
do 
   sudo docker exec jupyterhub useradd -m -s /bin/bash -N $i
   sudo docker exec jupyterhub bash -c "echo $i:$i | chpasswd"
   curl -XPOST --silent -k https://$(hostname):9443/hub/api/users/$i \
 -H "Authorization: token $TOKEN" | jq
done
```

`s3://amzn-s3-demo-bucket/createjupyterusers.sh` のような Amazon S3 の場所にスクリプトを保存します。ステップとして実行するために `script-runner.jar` を使えるようになります。

### 例: クラスターの作成時にスクリプトを実行する (AWS CLI)
<a name="emr-jupyterhub-multuser-createcluster"></a>

**注記**  
読みやすくするために、Linux 行連続文字 (\$1) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

```
aws emr create-cluster --name="MyJupyterHubCluster" --release-label emr-5.36.2 \
--applications Name=JupyterHub --log-uri s3://amzn-s3-demo-bucket/MyJupyterClusterLogs \
--use-default-roles --instance-type m5.xlarge --instance-count 2 --ec2-attributes KeyName=MyKeyPair \
--steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\
Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/createjupyterusers.sh"]
```

### 既存のクラスターでスクリプトを実行する (AWS CLI)
<a name="emr-jupyterhub-multuser-runningcluster"></a>

**注記**  
読みやすくするために、Linux 行連続文字 (\$1) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

```
aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=CUSTOM_JAR,\
Name=CustomJAR,ActionOnFailure=CONTINUE,\
Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/createjupyterusers.sh"]
```