> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/commander-cli/service-mode-rest-api/aws-marketplace.md).

# AWS Marketplace

#### AMIとは

Amazonマシンイメージ (AMI) は、AWSでEC2インスタンスを起動するための事前構成済みテンプレートです。OS、インストール済みソフトウェア、構成設定が含まれ、手動セットアップなしでサーバーをデプロイできます。同じAMIを使えば、AWSインフラ全体で一貫した再現可能なデプロイが行えます。

#### Keeper Commander AMI

Keeper Commander AMIはAWS Marketplaceから入手でき、サービスモードでKeeperコマンダーを実行するための、すぐにデプロイ可能なEC2イメージです。このデプロイオプションでは、手動でのインストールや構成を行わずに、安全なREST API経由でコマンダーCLIの機能を利用できます。

Keeper Commander AMIには、以下が含まれます。

* 事前構成済みのUbuntuベースのEC2イメージ
* インストール済みで即利用可能なKeeperコマンダー
* 構成済みのPython仮想環境
* コマンダーサービスモード (REST API) への対応

#### ユースケース

コマンダーサービスモードでは、ボルト操作、レコード管理、レポート、ローテーション、管理機能など、コマンダーCLIで利用できる任意のコマンドにREST API経由でアクセスできます。サービス作成時に許可コマンドを指定することで、組織の要件に合わせてAPIを調整できます。利用可能なコマンドの一覧については、コマンダーの[コマンドリファレンス](/keeperpam/jp/commander-cli/command-reference.md)をご参照ください。

* 自動化およびオーケストレーションワークフロー
* サードパーティプラットフォームとのPAM連携
* 安全なサービス間アクセス
* 動的なシークレット取得が必要なCI/CDパイプライン

***

### 前提条件

開始する前に、以下を用意してください。

| 要件                   | 説明                                                                                                                 |
| -------------------- | ------------------------------------------------------------------------------------------------------------------ |
| AWSアカウント             | EC2インスタンスの起動および管理権限                                                                                                |
| Keeper Commander AMI | [AWS Marketplace](https://us-east-1.console.aws.amazon.com/marketplace/search/listing/prodview-krkbznhplq4vy) から入手 |
| Keeperテナント           | KeeperPAMが有効なEnterpriseテナント                                                                                        |
| トンネル認証情報             | [Ngrok](https://ngrok.com/) または [Cloudflare](https://www.cloudflare.com/) トンネル認証トークン                               |
| SSHクライアント            | KeeperPAMまたはローカルSSHクライアントによるインスタンスへのリモートアクセス                                                                       |

***

### 手順1: Keeper Commander AMIを使用してEC2インスタンスを起動する

1. AWS Marketplaceで [Keeper Commander AMI](https://us-east-1.console.aws.amazon.com/marketplace/search/listing/prodview-krkbznhplq4vy) の掲載ページを開きます。
2. **\[Continue to Subscribe]** を選択し、続けて **\[Continue to Configuration]** を選択します。
3. 以下の推奨構成を使用して、新しいEC2インスタンスを起動します。

#### 推奨インスタンス構成

| 設定        | 値                    |
| --------- | -------------------- |
| インスタンスタイプ | t3.micro             |
| AMI       | Keeper Commander AMI |
| VPC/サブネット | デフォルトまたはカスタマー定義      |
| ストレージ     | デフォルト                |

***

### 手順2: セキュリティグループを構成する

以下のルールを持つセキュリティグループを作成または選択します。

#### インバウンドルール

| プロトコル | ポート | ソース         | 目的        |
| ----- | --- | ----------- | --------- |
| TCP   | 22  | 信頼できるIP範囲のみ | SSH管理アクセス |

#### アウトバウンドルール

| プロトコル | ポート | 送信先       | 目的          |
| ----- | --- | --------- | ----------- |
| All   | All | 0.0.0.0/0 | トンネル接続および更新 |

{% hint style="warning" %}
コマンダーサービスポートをインターネットに直接公開しないでください。外部アクセスにはNgrokまたはCloudflareトンネルを使用してください。
{% endhint %}

***

### 手順3: SSHキーペアを作成してアタッチする

1. 新しいSSHキーペアを作成するか、既存のキーペアを選択します。
2. `.pem` ファイルをダウンロードし、安全に保管します。
3. 起動時にEC2インスタンスへキーペアをアタッチします。

***

### 手順4: SSH経由でEC2インスタンスに接続する

インスタンスが実行中になったら、SSHを使用して接続します。

```
ssh -i "[KEY_PATH]" ubuntu@[SERVER_PUBLIC_DNS]
```

例は以下のとおりです。

```
ssh -i "key1.pem" ubuntu@ec2-3-88-236-125.compute-1.amazonaws.com
```

***

### 手順5: keeperユーザーに切り替えて環境を有効化する

接続後、`keeper` ユーザーに切り替えます。

```
sudo su keeper
```

Python仮想環境を有効化します。

```
source ~/venv/bin/activate
```

Keeperコマンダーを起動します。

```
keeper shell
```

***

### 手順6: デバイスを登録して永続的なログインを有効化する

このインスタンスで永続的なログインを有効化します。

```
this-device persistent-login on
```

Keeperテナントにデバイスを登録します。

```
this-device register
```

認証情報の有効期限を構成します。

```
this-device timeout 30d
```

#### 認証情報タイムアウトの目安

タイムアウト値は、デバイス認証情報が再認証を必要とするまでの有効期間を示します。

| 期間      | セキュリティレベル | ユースケース         |
| ------- | --------- | -------------- |
| 1d–7d   | 高         | 厳格なポリシーを持つ本番環境 |
| 14d–30d | 中         | 標準的な運用環境       |
| 60d–90d | 低         | 開発環境または低リスク環境  |

セキュリティ要件と運用の継続性のバランスを考慮して期間を選択してください。

***

### 手順7: コマンダーサービス (サービスモード) を作成する

コマンダーサービスモードでは、指定したコマンドのみ実行できるREST APIが利用できます。

#### コマンド制限

サービスモードでは、APIの公開範囲を制限するためにコマンド許可リストが適用されます。サービス作成時に `-c` パラメータで指定したコマンドのみ、REST API経由で実行できます。

<table><thead><tr><th width="107.5078125">パラメータ</th><th>形式</th><th>例</th></tr></thead><tbody><tr><td><code>-c</code></td><td>カンマ区切りのコマンドリスト</td><td><code>'record-add,whoami,tree'</code></td></tr></tbody></table>

**ベストプラクティス:** 特定のユースケースに必要なコマンドのみを有効にしてください。攻撃対象領域を縮小するため、広範なアクセスは避けてください。

利用可能なコマンドの一覧については、[コマンドリファレンス](/keeperpam/jp/commander-cli/command-reference.md)をご参照ください。

***

#### オプションA: Ngrokを使用してサービスを作成する

```
service-create \
  -p 9090 \
  -c 'record-add,whoami' \
  -ng [NGROK_TOKEN] \
  -cd [NGROK_DOMAIN]
```

***

#### オプションB: Cloudflareトンネルを使用してサービスを作成する

```
service-create \
  -p 9090 \
  -c 'record-add,whoami' \
  -cf [CLOUDFLARE_TOKEN] \
  -cfd [CLOUDFLARE_DOMAIN]
```

***

### サービスモードAPIの使用例

Keeperコマンダーサービスモードでは、事前に承認されたコマンダーコマンドをREST API経由で実行できます。

#### ベースサービスURL

* **Ngrok:** `https://<ngrok-domain>`
* **Cloudflareトンネル:** `https://<cloudflare-domain>`

#### WhoAmIの例

```bash
curl -X POST https://<SERVICE_DOMAIN>/api/v1/execute \
  -H "Content-Type: application/json" \
  -d '{
    "command": "whoami"
  }'
```

#### レコード作成の例

```bash
curl -X POST https://<SERVICE_DOMAIN>/api/v1/execute \
  -H "Content-Type: application/json" \
  -d '{
    "command": "record-add",
    "args": [
      "--title", "API Created Record",
      "--login", "admin",
      "--password", "StrongPassword123!",
      "--url", "https://example.com"
    ]
  }'
```

#### コマンド制限の適用

`service-create` 時に許可されていないコマンドを実行しようとすると、APIからは以下の応答が返されます。

```json
{
  "status": "error",
  "message": "Command not allowed"
}
```

***

### セキュリティに関する考慮事項

* 必要なコマンドのみを許可する
* サービスポートを公開しない
* NgrokまたはCloudflareトンネルのみを使用する
* SSHアクセスを信頼できるIP範囲に制限する
* SSH秘密鍵を保護する
* デバイスを定期的にローテーションして再登録する

***

### トラブルシューティング

#### 認証の問題

**症状:** コマンドが認証エラーまたはセッションエラーで失敗する。

**対処:** デバイス認証情報の有効期限が切れている可能性があります。デバイスを再登録してください。

```bash
this-device register
```

#### サービスに到達できない

**症状:** APIリクエストがサービスエンドポイントに接続できない。

**対処:**

* NgrokまたはCloudflare認証トークンを確認する
* トンネルドメインが正しく構成されていることを確認する
* セキュリティグループでアウトバウンドトラフィックが許可されていることを確認する

#### コマンドが拒否される

**症状:** APIから `"Command not allowed"` エラーが返される。

**対処:**

* `service-create` 時に使用した `-c` 許可リストにコマンドが含まれていることを確認する
* 構成変更後にサービスを再起動する

#### SSHアクセスの問題

**症状:** SSH経由でEC2インスタンスに接続できない。

**対処:**

* SSHキーファイルのパスと権限 (`chmod 400`) を確認する
* セキュリティグループでインバウンドTCPポート22が許可されていることを確認する
* `ubuntu` ユーザーでの接続 (`root` または `keeper` ユーザーは不可)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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/commander-cli/service-mode-rest-api/aws-marketplace.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.
