# AWS KMSでのゲートウェイ構成

## 概要 <a href="#overview" id="overview"></a>

KeeperゲートウェイがAmazon Web Services (AWS) Elastic Compute Cloud (EC2) インスタンスにインストールされている場合、対応するゲートウェイ構成ファイルをAWS Secrets Mangerに保存して保護することができます。ここの方法により、構成ファイルをインスタンスに保存する必要がなくなり、代わりにAWS KMSに保護された状態で構成ファイルを保存できます。

## AWSキー管理サービス (KMS) キー <a href="#aws-key-management-service-kms-key" id="aws-key-management-service-kms-key"></a>

AWS KMSは、データの暗号化と復号化に使用される暗号化キーを簡単に作成および制御できる、完全に管理されたサービスです。このサービスは他のAWSサービスと統合されているため、データの暗号化とキーの管理が簡単になります。このプロセスの一環としてAWS KMSキーが必要になります。このキーに権限を割り当てる際には、最小権限の原則に従うことをお勧めします。

## 要件 <a href="#create-keeper-gateway-configuration" id="create-keeper-gateway-configuration"></a>

AWS KMSを使用してKeeperゲートウェイの構成シークレットを保護するには、IAMロールが適用されるEC2インスタンスにKeeperゲートウェイをインストールする必要があります。この方法は、DockerインストールおよびLinuxインストールの両方に対応しています。

* [Dockerインストール](/keeperpam/jp/privileged-access-manager/getting-started/gateways/gateway-with-docker.md)
* [Linuxインストール](/keeperpam/jp/privileged-access-manager/getting-started/gateways/linux-installation.md)

## 構成を作成 <a href="#create-keeper-gateway-configuration" id="create-keeper-gateway-configuration"></a>

プレビュー版Keeperボルトで、**\[Secrets Manager]** > **\[アプリケーション]**&#x306B;進み、ゲートウェイが構成されたアプリケーションを選択します。その後、**\[ゲートウェイ]**&#x30BF;ブを開い&#x3066;**\[ゲートウェイのプロビジョン]**&#x3092;クリックします。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fl7r4jyhRAW6CEGeDdKIx%2Fimage.png?alt=media&#x26;token=9262903e-be5a-43b8-b63b-cb0023fa6343" alt=""><figcaption></figcaption></figure>

ゲートウェイの初期化方法とし&#x3066;**\[構成]**&#x3092;選択し、**\[次へ]**&#x3092;クリックします。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fq2aYeaDUmsep3LYCr9Qh%2Fimage.png?alt=media&#x26;token=adc0fcce-b759-4bfa-ab5a-507f7f38e4a0" alt=""><figcaption><p>構成方式を選択</p></figcaption></figure>

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FgLy3clCQBzdLIuwrnvKE%2Fimage.png?alt=media&#x26;token=db37535a-6e71-423b-8df1-64a419c7009e" alt=""><figcaption><p>Base64構成をコピー</p></figcaption></figure>

または、ワンタイムアクセストークンを生成し、Keeperゲートウェイの`gateway ott-init`コマンドを利用することも可能です。

```
gateway ott-init [ONE-TIME-TOKEN]
```

いずれの場合でも、base64エンコードされた構成が提供されます。以降の手順で使用しますので保存しておいてください。

## AWS Secrets Managerでシークレットを作成

### 1. AWS Secrets Managerに移動

AWSコンソールから、Secrets Managerへ移動し、新しいシークレットを作成します。

* **\[Other type of secret]** (その他の種類のシークレット) を選択します。
* **\[Plaintext]** (プレーンテキスト) を選択してBase64の値をすべて貼り付けます。
* **\[Next]**&#x3092;クリックします。

シークレットの名前と説明を入力してから、**\[Next]** > **\[Next]** > **\[Store]**&#x306E;順にクリックします。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FBR8OloPYxORK5bTYx3Ed%2Fimage.png?alt=media&#x26;token=43882f5a-abed-4be7-a3a8-d0861d2cdab1" alt=""><figcaption><p>シークレットの名前と説明</p></figcaption></figure>

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FvqVbkhKbo2hfBQdiPQjY%2Fimage.png?alt=media&#x26;token=b78afdf1-dde3-4c9a-97c8-646b82106e57" alt=""><figcaption><p>シークレットを閲覧</p></figcaption></figure>

### インスタンスロールにポリシーを割り当てる

EC2インスタンスのロールには、以下のように特定のAWS Secrets Managerキーに対する読み取りアクセスを提供するポリシーを割り当てる必要があります。

```json
{
    "Sid": "SecretsManagerPermissions",
    "Effect": "Allow",
    "Action": [
        "secretsmanager:GetSecretValue"
     ],
     "Resource": "arn:aws:secretsmanager:us-west-1:XXX:secret:XXX"
}
```

### アクセスを確認

EC2インスタンスから以下のコマンドを実行することで、ポリシーが適用されているかを確認できます。

{% code overflow="wrap" %}

```
aws secretsmanager get-secret-value --secret-id YourSecretName --query SecretString --output text
```

{% endcode %}

### Keeperゲートウェイの構成

Dockerインストール方式

Dockerインストールの場合、`GATEWAY_CONFIG`エントリを削除し、`AWS_KMS_SECRET_NAME`を追加して、その値にAWS Secrets Managerのシークレット名を指定します。

```
services:
      keeper-gateway:
        platform: linux/amd64
        image: keeper/gateway:preview
        shm_size: 2g
        security_opt:
          - seccomp:./docker-seccomp.json
          - apparmor=./guacd-apparmor-profile
        environment:
          ACCEPT_EULA: Y
          AWS_KMS_SECRET_NAME: "YourSecretName"
```

その後、新しい環境変数でサービスを更新します。

```
docker compose pull
docker compose down
docker compose up -d
```

#### Linuxインストール方式

Keeperゲートウェイのサービスユニットファイルを開きます。

`/etc/systemd/system/keeper-gateway.service`

「ExecStart」行を以下のように変更し、「YourSecretName」を割り当てられた名前に置き換えます。

{% code overflow="wrap" %}

```
ExecStart=/bin/bash -c "/usr/local/bin/gateway start --service --aws-kms-secret-name="YourSecretName" --log-to-stdout"
```

{% endcode %}

サービスに変更を適用します。

```
sudo systemctl daemon-reload
sudo systemctl restart keeper-gateway
```

起動時にエラーが発生した場合は、以下のコマンドで確認できます。

```
systemctl status keeper-gateway.service
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/privileged-access-manager/getting-started/gateways/advanced-configuration/gateway-configuration-with-aws-kms.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
