AWS Secrets Manager データベースシークレットを作成する
Amazon RDS、Amazon Aurora、Amazon Redshift、または Amazon DocumentDB でユーザーを作成したら、次の手順に従って、それらの認証情報を Secrets Manager に保存することができます。シークレットを保存するために、AWS CLI、またはいずれかの SDK を使用する場合、正しい JSON 構造でシークレットを指定する必要があります。コンソールを使用してデータベースシークレットを保存すると、Secrets Manager は正しい JSON 構造で自動的に作成します。
他のサービスによって管理されるシークレット の場合、マネージドローテーションを使用します。マネージドローテーション を使用するには、最初に管理サービスを通じてシークレットを作成します。
他のリージョンにレプリケートされているソースデータベースのデータベース認証情報を保存すると、シークレットにはソースデータベースの接続情報が含まれます。その後、シークレットをレプリケートすると、レプリカはソースシークレットのコピーとなり、同じ接続情報が含まれます。リージョン別の接続情報についてはシークレットにキーおよび値ペアを追加できます。
シークレットを作成するには、SecretsManagerReadWrite AWS マネージドポリシー によって付与されるアクセス許可が必要です。
シークレットを作成するには (コンソール)
Secrets Manager のコンソール (https://console.aws.amazon.com/secretsmanager/
) を開きます。 -
[Store a new secret] (新しいシークレットを保存する) を選択します。
-
[Choose secret type] (シークレットタイプを選択する) ページで、次の操作を行います。
-
[シークレットタイプ] で、保存するデータベース認証情報のタイプを選択します。
-
Amazon RDS データベース (Aurora を含む)
-
Amazon DocumentDB データベース
-
Amazon Redshift クラスター
-
-
認証情報を使用する場合、データベースの認証情報を入力します。
-
[Encryption key] (暗号化キー) には、シークレット内の値を暗号化するために Secrets Manager で使用する AWS KMS key を選択します。
-
多くの場合、Secrets Manager に AWS マネージドキー を使用するときは、aws/secretsmanager を選択します。このキーを使用してもコストは発生しません。
-
別の AWS アカウント からシークレットにアクセスする必要がある場合、または独自の KMSキーを使用してローテーションまたはキーポリシーを適用できるようにする場合は、リストからカスタマーマネージドキーを選択するか、[Add new key] (新しいキーを追加) を選択して作成します。カスタマーマネージドキーの使用料金の詳細については、「料金」を参照してください。
キーに対する次のアクセス許可が必要です:
kms:Encrypt
、kms:Decrypt
、およびkms:GenerateDataKey
。クロスアカウントアクセスの詳細については、別のアカウントのユーザーの AWS Secrets Manager シークレットに対するアクセス許可 を参照してください。
-
-
[Database] (データベース) で、データベースを選択します。
-
[Next] (次へ) をクリックします。
-
-
[Configure secret] (シークレットを設定する) ページで、次の操作を行います。
-
わかりやすいシークレット名と説明を入力します。シークレット名は 1~512 文字の Unicode 文字で構成されます。
-
(オプション) [Tags] (タグ) セクションで、タグをシークレットに追加します。タグ付け戦略については、「AWS Secrets Manager シークレットにタグ付けする」を参照してください。機密情報は暗号化されていないため、タグに保存しないでください。
-
(オプション) [Resource permissions] (リソースに対するアクセス許可) でリソースポリシーをシークレットに追加するには、[Edit permissions] (アクセス許可の編集) をクリックします。詳しくは、「アクセス許可ポリシーを AWS Secrets Manager シークレットにアタッチする」 を参照してください。
-
(オプション) [Replicate secret] (シークレットのレプリケート) で、シークレットを別の AWS リージョン にレプリケートするには、[Replicate secret] (シークレットをレプリケートする) をクリックします。シークレットのレプリケーションは、この段階で実行することも、後に戻ってきて実行することもできます。詳しくは、「シークレットを他のリージョンにレプリケートする」 を参照してください。
-
[Next] (次へ) を選択します。
-
-
(オプション) [Configure rotation] (ローテーションを設定する) ページで、シークレットの自動ローテーションを有効にできます。ローテーションをオフにしておいて、後でオンにすることもできます。詳しくは、「シークレットのローテーション」 を参照してください。[Next] (次へ) を選択します。
-
[Review] (レビュー) ページで、シークレットの詳細を確認し、[Store] (保存) を選択します。
Secrets Manager はシークレットのリストに戻ります。新しいシークレットが表示されない場合は、更新ボタンを選択します。
AWS CLI
コマンドシェルにコマンドを入力すると、コマンド履歴がアクセスされたり、ユーティリティからコマンドパラメータにアクセスされたりするリスクがあります。「AWS CLI を使用して AWS Secrets Manager のシークレットを保存する際のリスクを軽減する」を参照してください。
例 JSON ファイルの認証情報からシークレットを作成する
次の create-secret
の例では、ファイル内の認証情報からシークレットを作成しています。詳細については、「AWS CLI ユーザーガイド」の「ファイルから AWS CLI パラメータをロードする」を参照してください。
Secrets Manager がシークレットをローテーションできるようにするには、必ず JSON が シークレットの JSON 構造 にマッチしている必要があります。
aws secretsmanager create-secret \ --name MyTestSecret \ --secret-string file://mycreds.json
mycreds.json の内容:
{ "engine": "mysql", "username": "saanvis", "password": "EXAMPLE-PASSWORD", "host": "my-database-endpoint.us-west-2.rds.amazonaws.com", "dbname": "myDatabase", "port": "3306" }
AWS SDK
AWS SDK のいずれかを使用してシークレットを作成するには、CreateSecret
アクションを使用します。詳しくは、「AWS SDK」 を参照してください。