チュートリアル: シークレットの作成と取得 - AWS Secrets Manager

チュートリアル: シークレットの作成と取得

このチュートリアルでは、シークレットを作成して AWS Secrets Manager に保存します。次に、AWS マネジメントコンソール と AWS CLI の両方でシークレットを取得します。シークレットを作成して保存するだけなので、このチュートリアルではシークレットと連動するデータベースは必要ありません。

ステップ 1: AWS Secrets Manager でシークレットを作成および保存する

このステップでは、シークレットを作成し、AWS Secrets Manager で必要な基本情報を提供します。

ステップ 2: AWS Secrets Manager からシークレットを取得する

次に、Secrets Manager コンソールと AWS CLI を使用して、デコードされたシークレット情報を取得します。

前提条件

このチュートリアルでは、AWS アカウントにアクセスできることを前提としており、AWS Secrets Manager コンソールまたは AWS CLI の同等のコマンドでシークレットを作成および取得するアクセス許可を持つ IAM ユーザーとして AWS にサインインできることを前提としています。

ステップ 1: AWS Secrets Manager でシークレットを作成および保存する

このステップでは、IAM ユーザーとしてサインインしてシークレットを作成します。

コンソールからシークレットを作成して保存する

  1. https://console.aws.amazon.com/secretsmanager/ で AWS Secrets Manager コンソールにサインインします。

  2. サービスの概要ページまたは [シークレット] リストページで、[新しいシークレットの保存] を選択します。

  3. [新しいシークレットの保存] ページで、[他の種類のシークレット] を選択します。

  4. [このシークレットに保存するキーと値のペアを指定します] で、最初のフィールドに tutorials/MyFirstTutorialSecret と入力します。これにより、仮想フォルダ tutorials にシークレットと値 MyFirstTutorialSecret が保存されます。2 番目のフィールドは空白のままにしておきます。

  5. [プレーンテキスト] を選択すると、シークレットの [SecretString] フィールドに保存されるシークレットテキストの JSON バージョンが表示されます。

  6. [暗号化キーを選択] で、[DefaultEncryptionKey] を選択します。Secrets Manager がアカウントで作成するデフォルトの AWS マネージドキーを使用する場合は、AWS KMS は、料金を請求しません。カスタム KMS キーを使用する場合は、標準の AWS KMS レートで課金されます。

  7. [Next] を選択します。

  8. [シークレット名] で、テキストフィールドにシークレットの名前を入力します。使用できるのは英数字と /_+ =.@- の文字だけです。

  9. [説明] フィールドに、ルールの説明を入力します。

    [説明] に「The secret I created for the first tutorial.」などと入力します。

  10. [タグ] セクションで、[キー] および [Value - optional (値 - オプション)] テキストフィールドに目的のタグを追加します。

    このチュートリアルでは、タグを空白のままにしておきます。

  11. [Next] を選択します。

  12. このチュートリアルでは、ローテーションの設定を割愛し、[自動ローテーションを無効化] を選択し、[次へ] を選択します。

  13. [確認] ページでは、選択した設定を確認することができます。また、「サンプルコード」セクションで、認証情報の取得にこのシークレットを使用するために、切り取ってアプリケーションに貼り付けられる – コードを確認します。各タブには、コードがさまざまなプログラミング言語であります。

  14. 変更を保存するには、[保存] を選択します。

    Secrets Manager コンソールがアカウントのシークレットリストに戻り、新しいシークレットがリストに含まれます。

ステップ 1: CLI を使用して AWS Secrets Manager でシークレットを作成して保存する

  1. コマンドプロンプトを開き、AWS CLI を実行します。AWS CLI をまだインストールしていない場合は、「AWS Command Line Interface のインストール」を参照してください。

  2. シークレットにアクセスするためのアクセス許可を持つ認証情報を使用して、次の各コマンドを入力します。

  3. シークレットを作成する

    $ aws secretsmanager create-secret --name tutorials/MyFirstTutorialSecret --description "The secret I created for the first tutorial"

コマンドの出力には、次の情報が表示されます。

{ "ARN": "&region-arn;secretsmanager:us-west-2:123456789012:secret:tutorials/MyFirstTutorialSecret-a1b2c3", "Name": "tutorials/MyFirstTutorialSecret", }

ステップ 2: AWS Secrets Manager からシークレットを取得する

このステップでは、Secrets Manager コンソールと AWS CLI の両方を使用してシークレットを取得します。

AWS Secrets Manager コンソールでシークレットを取得する

  1. コンソールにログインしていない場合は、コンソール (https://console.aws.amazon.com/secretsmanager/) に移動し、Secrets Manager サービスにログインします。

  2. [シークレット] リストページで、作成した新しいシークレットの名前を選択します。

    Secrets Manager に、シークレットの [Secrets details (シークレットの詳細)] ページが表示されます。

  3. [シークレット値] セクションで、[Retrieve secret value(シークレット値の取得)] を選択します。

  4. シークレットは、キーと値のペアとして、または JSON テキスト構造として表示できます。

AWS Secrets Manager CLI を使用してシークレットを取得するには

  1. コマンドプロンプトを開き、AWS CLI を実行します。AWS CLI をまだインストールしていない場合は、「AWS Command Line Interface のインストール」を参照してください。

  2. シークレットにアクセスするためのアクセス許可を持つ認証情報を使用して、次の各コマンドを入力します。

    暗号化されたテキスト以外のすべてのシークレットの詳細を表示するには:

    $ aws secretsmanager describe-secret --secret-id tutorials/MyFirstTutorialSecret { "ARN": "&region-arn;secretsmanager:region:123456789012:secret:tutorials/MyFirstTutorialSecret-jiObOV", "Name": "tutorials/MyFirstTutorialSecret", "Description": "My First Secret", "LastChangedDate": 1522680794.8, "LastAccessedDate": 1522627200.0, "VersionIdsToStages": { "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE": [ "AWSCURRENT" ] } }

    VersionIdsToStages の戻り値を確認します。出力には、シークレットのすべての有効なバージョン、および各バージョンに添付されたステージングラベルのリストが含まれます。このチュートリアルでは、単一のステージングラベル AWSCURRENT にマッピングされるバージョン ID (UUID タイプ値) が表示されます。

    シークレットの暗号化されたテキストを表示するには:

    $ aws secretsmanager get-secret-value --secret-id tutorials/MyFirstTutorialSecret --version-stage AWSCURRENT { "ARN": "&region-arn;secretsmanager:region:123456789012:secret:tutorials/MyFirstTutorialSecret-jiObOV", "Name": "tutorials/MyFirstTutorialSecret", "VersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE", "SecretString": "{\"username\":\"myserviceusername\",\"password\":\"MyVerySecureP@ssw0rd!\"}", "VersionStages": [ "AWSCURRENT" ], "CreatedDate": 1522680764.668 }

    AWSCURRENT とは異なるステージングラベルのバージョンの詳細のみが必要な場合は、前述のコマンドに --version-stage パラメータを含める必要があります。Secrets Manager は、規定値として AWSCURRENT を使用します。

    結果には、SecretString レスポンスフィールドの、シークレット値の JSON バージョンが含まれます。

概要

このチュートリアルでは、単純なシークレットを作成する方法と、値を必要な際に、シークレット値を取得する方法について説明しました。シークレットの作成と自動ローテーションの設定に関する別のチュートリアルについては、「チュートリアル: AWS データベースのシークレットのローテーション」を参照してください。