# profileコマンド

## `profile`コマンド

**説明**: デバイスのプロファイルを初期化したり切り替えたりします。同じデバイスで複数の環境を使い分ける場合にも利用できます。

**パラメータ**

実行するサブコマンドとオプション

形式: **`ksm profile <サブコマンド>`**

**サブコマンド**

| サブコマンド   | 説明                                            |
| -------- | --------------------------------------------- |
| `init`   | 新しいクライアントデバイスのプロファイルを初期化します                   |
| `setup`  | AWS などサードパーティの外部シークレットマネージャーから新しいプロファイルを設定します |
| `list`   | 作成されたプロファイルを一覧表示して、有効なプロファイルを示します             |
| `export` | 設定プロファイルをエクスポートします                            |
| `import` | エクスポートされた暗号化プロファイルから新しい設定を作成します               |
| `active` | 有効な設定プロファイルを指定します                             |

### **init**

クライアントデバイスのプロファイルを初期化します。

```
ksm profile init
```

`keeper.ini` ファイルが現在の作業ディレクトリに作成されます。WindowsまたはMac OSのバイナリアプリケーションの場合、`keeper.ini`は、ユーザーのホームディレクトリ (${HOME}環境変数または`$env:USERPROFILE`環境変数) に作成されます。`keeper.ini`は以下の場所に移動できます。

* 環境変数`KSM_INI_DIR`で定義されたパス
* 現在のディレクトリ
* ユーザーのホームディレクトリ
  * `${HOME}`
  * `${HOME}/.config/ksm`
  * `$env:USERPROFILE`
* 様々なシステムディレクトリ
  * `/etc`
  * `/etc/ksm`
  * `/etc/keeper`
  * `$env:APPDATA/Keeper`
  * `$env:ProgramData/Keeper`
  * `$env:ProgramFiles/Keeper`

パラメータ

* `-t、--token <トークン>` ワンタイムアクセストークン
* `-h、--hostname <XX>` 接続先のリージョン

  デフォルトはUSリージョンです。他のリージョンでホストされている場合、以下の値を設定する必要があります。

  * `US` (米国)
  * `EU` (ヨーロッパ)
  * `AU` (オーストラリア)
  * `JP` (日本)
  * `CA` (カナダ)
  * `US_GOV` (GovCloud)
* `--ini-file <ファイル名>` 新しいプロファイルをこのファイルに保存します。
* `-p、--profile-name <名前>` プロファイル名を設定します。\
  設定しない場合、プロファイルは「default」に設定されます。

通常KSM CLIを初期化する際には、以下のようにボルトまたはKeeperコマンダーで作成されたトークンを使用します。

```
$ ksm profile init --token XX:XXXXXXXX
```

トークンをコマンドライン上で露出させないようにするためには、以下のように`KSM_CLI_TOKEN`環境変数を使用してください。

```
ksm profile init --ini-file=/tmp/custom.ini --profile=non_default
```

{% hint style="warning" %}
`KSM_CLI_TOKEN` 環境変数を使用してワンタイムトークンを提供することで、カスタムINIファイルやカスタムプロファイルを選択して作成・上書きすることが可能です。この設定はコマンドラインの`--token`オプションによって上書きすることもできます。
{% endhint %}

[クイックスタートガイド](/keeperpam/jp/secrets-manager/quick-start-guide.md)に記載のように、まずコマンダーCLIかKeeperボルトインターフェイスでトークンを作成できます。

```
My Vault> secrets-manager client add --app MyApplicationName
```

### **setup**

AWS Secrets Managerなどの外部ストレージからロードされる新しいプロファイルを設定します。これは、クラウドインスタンスから KeeperシークレットマネージャーCLIを使用する際に最適です。この認証方法を使用することで、追加のセキュリティ層が加わります。

AWSのような外部ストレージプロバイダーとの統合には以下の3つの方法があります。

* EC2インスタンスロール (推奨)
* AWSプロファイル認証情報
* AWSカスタムキー

#### 方法1: EC2インスタンスロール

{% hint style="info" %}
この方法を使用するには、特定のAWS Secrets Managerのシークレットを読み取る権限を持つロールが設定されたEC2インスタンスに、KeeperシークレットマネージャーCLIをインストールする必要があります。特定のキーのみを読み取れる最小限の権限を持つEC2ロールポリシーを設定することを推奨します。 AWS Secrets Managerのアクセス制御についての詳細は、公式ドキュメントをご参照ください。
{% endhint %}

以下は、AWS EC2インスタンスロールを使用して、EC2インスタンス上でKSM CLIプロファイルを初期化する手順となります。

```
ksm profile setup --type=aws
```

これにより、以下のようにAWS内のシークレットキーを定義する`keeper.ini`ファイルが作成されます。

```
....

[_default]
storage = aws
provider = ec2instance
secret = ksm-config
```

デフォルトでは、シークレットキーは`ksm-config`という名前であると仮定されます。異なるキー値を使用したい場合は、`keeper.ini`ファイルを編集するか、`--secret`オプションを使用して指定します。

```
ksm profile setup --type=aws --secret my-ksm-config
```

#### 方法2: AWSプロファイル認証情報

KSM CLIは、事前にこのデバイス上で [`aws configure` コマンド](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-quickstart.html#getting-started-quickstart-new)を使用して初期化された特定のAWSプロファイルを利用するよう設定できます。

{% hint style="info" %}
この方法では、AWSプロファイルの認証情報は、AWS Secrets Managerから特定のキーのみを読み取る権限を持つロールに割り当てる必要があります。AWS Secrets Managerのアクセス制御について、詳しくは[こちらのウェブページ](https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/auth-and-access.html)をご参照ください。
{% endhint %}

例

```
ksm profile setup --type=aws --secret=ksm-config --credentials=profile --credentials-profile=default
```

#### 方法3: AWSカスタムキー

KSM CLIで特定のAWSアクセスキーとシークレットキーのペアを使用するように設定できます。この場合、アクセスキーとシークレットキーはローカルの`keeper.ini`ファイルに保存されます。

例

{% code overflow="wrap" %}

```
ksm profile setup --type=aws --secret=ksm-config --credentials=keys --aws-access-key-id XXX --aws-secret-access-key XXX --region XXX
```

{% endcode %}

追加のフラグ `--fallback` を使用すると、初期の認証情報が失敗した場合に、デフォルトのAWSローカル設定からのプロファイルを使用するように指定できます。

#### KSM CLIのセットアップを完了

セットアップを完了するには、KeeperボルトインターフェースまたはKeeperコマンダーCLIからbase64形式のKSM設定値を生成する必要があります。これについては、[クイックスタートガイド](/keeperpam/jp/secrets-manager/quick-start-guide.md)にも記載されています。

[コマンダーCLI](/keeperpam/jp/commander-cli/overview.md)を使用すると、以下のようなコマンドを使用して生成できます。

```
My Vault> secrets-manager client add --app "My KSM App" --config-init b64

Successfully generated Client Device
====================================

Initialized Config: [Base64 Config....]
```

以下の手順で使用するために、設定値をコピーします。

このKSMデバイスがKeeperシークレットマネージャーと認証するためには、base64形式のKSM設定値をAWS Secrets Managerに入力する必要があります。例えば、AWS CLIを使用して以下のように設定できます。

{% code overflow="wrap" %}

```
aws secretsmanager create-secret --name ksm-config --secret-string '[Base64 Config]'
```

{% endcode %}

KSM CLIが機能し、ボルトからシークレットにアクセスできることを確認するには、以下のコマンドを使用します。

```
ksm secret list

 UID                     Record Type          Title
 ----------------------- -------------------- --------------------------
 n9SdOX1cEyMj9Ttj3lsjYQ  pamUser              IAM Account: demouser
 WfxgS6E_bY_tzdIChYIsAA  login                Amazon AWS - john
 toAfybW5SsbhRT9LtZ7oyg  serverCredentials    QA Server
```

#### 追加のセットアップオプション

`--ini-file <ファイル名>` 新しいプロファイルをこのファイルに保存します。\
\
`-p、--profile-name <名前>` プロファイル名を設定します。設定しない場合、プロファイルは「default」として設定されます。

### **list**

現在のクライアントデバイスで利用可能なすべてのプロファイルを一覧で表示します。

`ksm profile list`

例

```
$ ksm profile list

  Active   Profile
 ======== ===============
           Production
  *        Test Server 1
           Test Server 2
           Local Dev
```

### **export**

現在のプロファイルをbase64でエンコードした文字列にエクスポートします。

`ksm profile export [--plain] [--file-format] [プロファイル名]`

オプションパラメータ

* `--plain` 文字列をbase64でエンコードせずにプロファイルをエクスポートします。
* `--file-format` プロファイルを特定のファイル形式にエクスポートします。利用できる形式は以下のとおりです。
  * ini CLIの別のインスタンスで使用されます。
  * json CLIおよびその他の開発者用SDKで使用できます。

例

```
$ ksm profile export my_profile
```

注: KSM構成に外部ストレージプロバイダを使用する場合、プロファイルはエクスポートできません。

### import

暗号化されたbase64エンコード文字列からクライアントデバイスのプロファイルをインポートします。

`ksm profile import [--output-file "INI filename"] <BASE64 CONFIG>`

オプションパラメータ

* `--output-file <INIファイル名>` INI設定ファイルの作成場所です。設定されていない場合は、現在のディレクトリに作成されます。

```
$ ksm profile import --output-file=my_profile BASE64_ENC_CONFIG
```

### **active**

このクライアントデバイスの現在有効なプロファイルを設定します。

`ksm profile active <プロファイル名>`

例

```
$ ksm profile active production

production is now the active profile.
```

### **コンテナ内のプロファイル**

コンテナ化された環境内でCLIを実行している場合、プロファイルを初期化できないことがあります。INI構成ファイルが見つからず、環境変数**KSM\_TOKEN**が見つかった場合、デフォルトプロファイルが自動生成されます。INI構成ファイルが作成され、現在の作業ディレクトリに格納されます。これは、環境変数**KSM\_INI\_DIR**で上書きできます。

### **デフォルトのINIファイル名**

INIファイルのデフォルトの名前は`keeper.ini`ですが、`KSM_INI_FILE`環境変数を使用して上書きできます。`KSM_INI_DIR`および`KSM_INI_FILE`環境変数を使用すると、INI構成ファイルの場所と名前を完全に変更できます。


---

# 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/secrets-manager/secrets-manager-command-line-interface/profile-command.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.
