

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

# を使用して AWS Secrets Manager シークレット AWS CLI を保存するリスクを軽減する
<a name="security_cli-exposure-risks"></a>

 AWS Command Line Interface (AWS CLI) を使用して AWS オペレーションを呼び出す場合は、これらのコマンドをコマンドシェルに入力します。たとえば、Windows コマンドプロンプトや Windows PowerShell、または Bash や Z シェルなどを使用できます。これらのコマンドシェルの多くには、生産性を向上させるために設計された機能が含まれています。ただし、この機能はシークレットを侵害するために使用される可能性があります。たとえば、ほとんどのシェルでは、上矢印キーを使用して、最後に入力されたコマンドを表示できます。*コマンド履歴*機能は、セキュリティ保護されていないセッションにアクセスされた場合に、悪用される可能性があります。また、バックグラウンドで動作する他のユーティリティは、タスクをより効率的に実行できるようにする目的でコマンドパラメータにアクセスできます。このようなリスクを軽減するには、次の手順を実行します。
+ コンソールから離れるときは、常にコンピュータをロックします。
+ 要らないまたは使用しなくなったコンソールユーティリティをアンインストールするか無効にします。
+ シェルまたはリモートアクセスプログラムを使用している場合は、入力したコマンドのログを記録しないようにします｡
+ シェルのコマンド履歴によってキャプチャされないようにパラメータを渡す方法を使用します。次の例は、シークレットテキストをテキストファイルに入力し、そのファイルを AWS Secrets Manager コマンドに渡してすぐにファイルを破棄する方法を示しています。これは、典型的なシェル履歴がシークレットテキストをキャプチャしないことを意味します。

  次の例は、典型的な Linux コマンドを示しています (シェルには多少異なるコマンドが必要な場合があります)。

  ```
  $ touch secret.txt                                                                           # Creates an empty text file
  $ chmod go-rx secret.txt                                                                     # Restricts access to the file to only the user
  $ cat > secret.txt                                                                           # Redirects standard input (STDIN) to the text file
  ThisIsMyTopSecretPassword^D                                                                  # Everything the user types from this point up to the CTRL-D (^D) is saved in the file
  $ aws secretsmanager create-secret --name TestSecret --secret-string file://secret.txt       # The Secrets Manager command takes the --secret-string parameter from the contents of the file
  $ shred -u secret.txt                                                                        # The file is destroyed so it can no longer be accessed.
  ```

これらのコマンドを実行した後、上下の矢印を使用してコマンド履歴をスクロールし、シークレットテキストがどの行にも表示されないようにする必要があります。

**重要**  
デフォルトでは、コマンドヒストリバッファのサイズを最初に [**1**] に減らさないかぎり、Windows で同様のテクニックを実行することはできません。

**Windows コマンドプロンプトで 1 コマンドのコマンド履歴バッファのみを使用するように設定するには**

1. 管理者コマンドプロンプトを開きます ([**Run as administrator (管理者として実行)**])。

1. 左上にあるアイコンを選択し、**[プロパティ]** を選択します。

1. [**オプション**] タブで､[**バッファサイズ**] と [**Number of Buffers (バッファ数)**] の両方を **1** に設定し、[**OK**] を選択します。

1. 履歴に入れたくないコマンドを入力する必要がある場合は、直後に次のようなコマンドを 1 つ続けます。

   ```
   echo.
   ```

   これにより、機密性の高いコマンドがフラッシュされます。

Windows Command Prompt シェルでは､[SysInternals SDelete](https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete) ツールをダウンロードして、次のようなコマンドを使用することができます。

```
C:\> echo. 2> secret.txt                                                                       # Creates an empty file
C:\> icacls secret.txt /remove "BUILTIN\Administrators" "NT AUTHORITY/SYSTEM" /inheritance:r   # Restricts access to the file to only the owner
C:\> copy con secret.txt /y                                                                    # Redirects the keyboard to text file, suppressing prompt to overwrite
THIS IS MY TOP SECRET PASSWORD^Z                                                             # Everything the user types from this point up to the CTRL-Z (^Z) is saved in the file
C:\> aws secretsmanager create-secret --name TestSecret --secret-string file://secret.txt      # The Secrets Manager command takes the --secret-string parameter from the contents of the file
C:\> sdelete secret.txt                                                                        # The file is destroyed so it can no longer be accessed.
```