AWS CLI を使用して AWS Secrets Manager のシークレットを保存する際のリスクを軽減する - AWS Secrets Manager

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

AWS CLI を使用して AWS Secrets Manager のシークレットを保存する際のリスクを軽減する

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 (管理者として実行)])。

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

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

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

    echo.

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

Windows Command Prompt シェルでは、SysInternals 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.