すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:ApsaraDB RDSシークレットの管理と使用

最終更新日:Jan 17, 2025

ApsaraDB RDSデータベースのアカウントは、Key Management Service (KMS) のApsaraDB RDSシークレットで管理できます。 この場合、Alibaba Cloud SDK、KMSインスタンスSDK、またはシークレットSDKをアプリケーションに統合すると、アプリケーションはKMSからシークレットを動的に取得してApsaraDB RDSデータベースにログインできます。 シークレットローテーションを設定して、アカウントリークのリスクを減らすことができます。 このトピックでは、ApsaraDB RDSシークレットを管理および使用する方法について説明します。

説明

ApsaraDB RDSシークレットを使用する場合、アプリケーションで静的データベースアカウントを設定する必要はありません。 KMSでApsaraDB RDSデータベースのアカウントにApsaraDB RDSシークレットを作成した後、アプリケーションはGetSecretValue操作を呼び出して、データベースにアクセスするためのシークレットを取得できます。

重要

KMSでApsaraDB RDSアカウントを管理する場合、ApsaraDB RDSのアカウントを変更または削除しないでください。 そうしないと、サービス障害が発生する可能性があります。

image

ApsaraDB RDSシークレットの回転

KMSがApsaraDB RDSシークレットをローテーションすると、関連付けられたApsaraDB RDSアカウントのパスワードが変更されます。 アカウントのユーザー名は変更されません。 ほとんどの場合、ApsaraDB RDSシークレットのローテーションはすぐに完了します。 2分を超えてもローテーションが完了しない場合は、関連するApsaraDB RDSインスタンスと関連するApsaraDB RDSアカウントが正常かどうかを確認します。

重要

ApsaraDB RDSシークレットがローテーションされている場合、ApsaraDB RDSシークレットに関連付けられているApsaraDB RDSインスタンスとApsaraDB RDSアカウントは削除しないでください。 そうでなければ、回転失敗が起こる。

KMSを使用してApsaraDB RDSシークレットを管理する場合、シングルアカウントモードとデュアルアカウントモードを使用してシークレットを管理できます。 ローテーションポリシーは異なります。

  • シングルアカウントモード

    ローテーションでは、アカウントの新しいパスワードをシークレットで生成します。 パスワードが切り替えられると、シークレットの現在のバージョンは一時的に利用できなくなる可能性があります。 再試行ポリシーを設定することを推奨します。

  • デュアルアカウントモード

    2回目のローテーション中に、最初のアカウントのパスワードが変更されます。 KMSは、シークレットがローテーションされるたびに、2つのアカウントのパスワードを交互に変更します。 詳細は以下の図をご参照ください。

    image

使用上の注意

  • KMSは、ApsaraDB RDS for MySQL、ApsaraDB RDS for MariaDB、ApsaraDB RDS for SQL Server、およびApsaraDB RDS for PostgreSQLのApsaraDB RDSインスタンスをサポートしています。 KMSは、SQL Server 2017 EEを実行するApsaraDB RDS for SQL Serverインスタンスをサポートしていません。

  • ApsaraDB RDSデータベースの単一のアカウントに対して、複数のApsaraDB RDSシークレットを作成しないでください。 1つのアカウントに対して複数のApsaraDB RDSシークレットを作成し、ApsaraDB RDSシークレットの1つがローテーションされると、ApsaraDB RDSシークレットに保存されているパスワードが変更されます。 この場合、他のApsaraDB RDSシークレットのシークレット値を使用してApsaraDB RDSデータベースにログインすることはできません。

前提条件

ステップ1: ApsaraDB RDSシークレットの作成

シークレットを作成するときに、シークレットの自動ローテーションを設定できます。 これは、秘密の漏れのリスクを減らすのに役立ちます。

  1. KMS コンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. データベース資格情報 タブをクリックし、インスタンス管理 ドロップダウンリストからKMSインスタンスのIDを選択し、[シークレットの作成] > シングル資格情報の作成 を選択します。 表示されるパネルで、パラメーターを設定し、[OK] をクリックします。

    説明
    • 一度に複数のApsaraDB RDSシークレットを作成することはできません。

    • ApsaraDB RDSシークレットを作成すると、AliyunServiceRoleForKMSSecretsManagerForRDSサービスにリンクされたロールが自動的に作成され、AliyunServiceRolePolicyForKMSSecretsManagerForRDSポリシーがロールにアタッチされます。 KMSは、ApsaraDB RDSシークレットを管理する役割を引き受けます。 たとえば、KMSはApsaraDB RDSアカウントのパスワードをローテーションできます。

      RAMコンソールにログインして、サービスにリンクされたロールとポリシーの詳細を表示できます。 詳細については、「RAMロールに関する情報の表示」および「ポリシーに関する基本情報の表示」をご参照ください。

    パラメーター

    説明

    データベースタイプ

    作成するデータベースシークレットの種類。 ApsaraDB RDS 資格情報 を選択します。

    資格情報名

    秘密の名前。The name of the secret. シークレット名は現在のリージョン内で一意です。

    ApsaraDB RDS インスタンス

    Alibaba Cloudアカウント内で管理する既存のApsaraDB RDSインスタンス。

    アカウント管理

    • デュアルアカウント管理 (推奨): このモードは、アプリケーションがApsaraDB RDSインスタンスにアクセスするためにシークレットを使用するシナリオに適しています。 このモードでは、KMSは同じ権限を持つ2つのアカウントを管理します。 このモードでは、シークレットのローテーション時にアプリケーションとApsaraDB RDSインスタンス間の接続が中断されないようにします。

      • アカウントを作成 タブをクリックし、ユーザー名のプレフィックスを指定し、データベースを選択してから権限を指定します。

        説明

        KMSはすぐにアカウントを作成しません。 KMSは、秘密情報を確認して確認した後にアカウントを作成します。

      • 存在するアカウントをインポート タブをクリックし、ユーザー名を選択して、ユーザー名のパスワードを指定します。

        説明

        ApsaraDB RDSインスタンスの作成時にアカウントに指定したパスワードと同じパスワードを指定することを推奨します。 ユーザー名と指定されたパスワードが一致しない場合は、シークレットが最初にローテーションされたときに有効なユーザー名とパスワードを取得できます。

    • シングルアカウント管理: このモードは、特権アカウントまたは手動O&Mアカウントが管理されるシナリオに適しています。 このモードでは、秘密が回転されるとき、秘密の現在のバージョンは一時的に利用不可能であり得る。

      • アカウントを作成 タブをクリックし、ユーザー名のプレフィックスを指定して、アカウントタイプを選択します。

        [アカウントタイプ] パラメーターとして、標準アカウント または 特権アカウント を選択できます。 標準アカウント を選択した場合、データベースを選択し、アカウントの権限を指定する必要があります。

      • 存在するアカウントをインポート タブをクリックしてユーザー名を選択し、ユーザー名のパスワードを指定します。

    CMK

    シークレットの現在の値を暗号化するために使用されるキー。

    重要
    • キーとシークレットは同じKMSインスタンスに属している必要があります。 キーは対称キーである必要があります。 KMSでサポートされている対称キーの詳細については、「キーの種類と仕様」をご参照ください。

    • RAMユーザーまたはRAMロールの場合は、キーを使用してGenerateDataKey操作を呼び出す権限が必要です。

    タグ

    シークレットに追加するタグ。 タグを使用して、シークレットを分類および管理できます。 タグはキーと値のペアで構成されます。

    説明
    • タグキーまたはタグ値の長さは最大128文字で、英数字、スラッシュ (/) 、バックスラッシュ (\) 、アンダースコア (_) 、ハイフン (-) 、ピリオド (.) 、プラス記号 (+) 、等号 (=) 、コロン (:) 、アット記号 (@) 、およびスペースを使用できます。

    • タグキーをaliyunまたはacs: で始めることはできません。

    • シークレットごとに最大20個のキーと値のペアを設定できます。

    自動ローテーション

    自動シークレットローテーションを有効にするかどうかを指定します。

    ローテーション期間

    自動秘密ローテーションの間隔。 この設定は、自動回転を有効にする場合にのみ必要です。 値の範囲は6時間から365日です。

    KMSは、このパラメーターの値に基づいてシークレットを定期的に更新します。

    説明

    The description of the secret.

    ポリシー設定

    シークレットのポリシー設定。 詳細については、「Overview」をご参照ください。

    デフォルトのポリシーを使用し、シークレットの作成後にビジネス要件に基づいてポリシーを変更できます。

手順2: ApsaraDB RDSシークレットをアプリケーションに統合する

KMSは、Alibaba Cloud SDK、KMSインスタンスSDK、シークレットクライアント、およびシークレットを取得するためのシークレットJDBCクライアントを提供します。 アプリケーションはSDKを使用してApsaraDB RDSシークレットを統合できます。 シークレットJDBCクライアントは、ビジネスロジック、ベストプラクティス、およびデザインパターンをカプセル化します。 アプリケーションは、KMSで管理されているApsaraDB RDSシークレットを使用して、JDBC APIを使用してID認証を実装し、関連付けられたデータベースにアクセスできます。 SDKの詳細については、「SDKリファレンス」をご参照ください。

アプリケーションがJavaで開発されている場合は、シークレットJDBCクライアントを使用することを推奨します。 詳細については、「Secret JDBC client」をご参照ください。 アプリケーションがPythonまたはGoで開発されている場合は、シークレットクライアントを使用することをお勧めします。 詳細については、「シークレットクライアント」をご参照ください。 アプリケーションが他のプログラミング言語で開発されている場合は、KMSインスタンスSDKまたはAlibaba Cloud SDKを使用することを推奨します。

説明

SDKを使用して、ApsaraDB RDSシークレットの作成やApsaraDB RDSシークレットのタグの変更などの管理操作を実行する場合は、Alibaba Cloud SDKのみを使用できます。

次のステップ

ApsaraDB RDSシークレットの回転

重要
  • ApsaraDB RDSシークレットがローテーションされると、KMSはApsaraDB RDSにリクエストを送信し、関連するApsaraDB RDSアカウントのパスワードを変更します。 ApsaraDB RDSシークレットをローテーションする前に、すべてのアプリケーションがKMSからApsaraDB RDSシークレットを取得していることを確認してください。 これにより、アプリケーションが使用できなくなります。

  • ApsaraDB RDSシークレットに関連付けられているApsaraDB RDSのインスタンスまたはアカウントを削除した場合、KMSはシークレットをローテーションできません。 ローテーションの前にアカウントチェックを実行し、KMSがチェックの成功を求めた後にローテーションを実行することを推奨します。

シークレットの自動ローテーションを設定して、シークレットリークのリスクを減らすことができます。 シークレットが漏洩した場合は、KMSコンソールでシークレットをすぐに回転させて、侵入のリスクを排除できます。

  1. KMS コンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. データベース資格情報 タブをクリックし、インスタンス管理 ドロップダウンリストからKMSインスタンスのIDを選択し、ローテーションするシークレットを見つけて、操作 列の 詳細 をクリックします。

  3. Versions タブで、Configure Rotation をクリックします。 チェックが完了したら、チェック結果を表示します。

    • 自動回転: 自動回転をオンにする場合は、回転期間を選択する必要があります。 値の範囲は6時間から365日です。

    • 今すぐローテーション: このオプションを選択すると、KMSはすぐにシークレットをローテーションします。

アカウントチェックの実行

KMSは、シークレットで保護されているアカウントが、関連付けられているApsaraDB RDSインスタンスに属しているかどうかを確認します。 はいの場合、秘密を回転させることができます。 いいえの場合、シークレットを削除し、別のApsaraDB RDSシークレットを作成する必要があります。

  1. KMS コンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. データベース資格情報 タブをクリックし、インスタンス管理 ドロップダウンリストからKMSインスタンスのIDを選択し、管理するシークレットを見つけて、操作 列の 詳細 をクリックします。

  3. Versions タブで、Check Account をクリックします。 チェックが完了したら、チェック結果を表示します。

ApsaraDB RDSシークレットの削除

警告

ApsaraDB RDSシークレットを削除する前に、ApsaraDB RDSシークレットが使用されていないことを確認してください。 使用中のApsaraDB RDSシークレットを削除すると、サービス障害が発生する可能性があります。

ApsaraDB RDSシークレットをすぐに削除するか、スケジュールタスクを作成してApsaraDB RDSシークレットを削除できます。 ApsaraDB RDSシークレットを削除すると、ApsaraDB RDSシークレットはKMSからのみ削除されます。 ApsaraDB RDSでは、シークレットのユーザー名とパスワードは削除されません。

  1. KMS コンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. データベース資格情報 タブをクリックし、インスタンス管理 ドロップダウンリストからKMSインスタンスのIDを選択し、削除するシークレットを見つけて、操作 列の Schedule Deletion をクリックします。

  3. Schedule Deletion ダイアログボックスで、シークレットを削除する方法を選択し、[OK] をクリックします。

    • Schedule Deletion を選択した場合、保持期間 (7〜30日) を設定します。 スケジュールされた削除期間が終了すると、KMSはシークレットを削除します。

    • Delete Immediately を選択すると、シークレットがすぐに削除されます。

    スケジュールされた削除期間中に、操作 列の [OK] をクリックして削除をキャンセルできます。

タグをシークレットに追加

タグを使用して、シークレットを分類および管理できます。 タグはキーと値のペアで構成されます。

説明
  • タグキーまたはタグ値の長さは最大128文字で、英数字、スラッシュ (/) 、バックスラッシュ (\) 、アンダースコア (_) 、ハイフン (-) 、ピリオド (.) 、プラス記号 (+) 、等号 (=) 、コロン (:) 、アット記号 (@) 、およびスペースを使用できます。

  • タグキーをaliyunまたはacs: で始めることはできません。

  • シークレットごとに最大20個のキーと値のペアを設定できます。

シークレットのタグの追加

解決策

説明

方法1: Secretsページにタグを追加する

  1. KMS コンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. シークレットのタイプに基づいてタブをクリックし、インスタンス管理 ドロップダウンリストから必要なインスタンスIDを選択し、必要なシークレットを見つけて、[タグ] 列のimage.pngアイコンをクリックします。

  3. [追加] をクリックします。 [タグの編集] ダイアログボックスで、複数の [タグキー][タグ値] を入力し、[OK] をクリックします。 表示されるメッセージで、[閉じる] をクリックします。

    [タグの編集] ダイアログボックスで、タグの値を変更したり、一度に複数のタグを削除したりできます。

方法2: Secret Detailsページにタグを追加する

  1. KMS コンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. シークレットのタイプに基づいてタブをクリックします。 インスタンス管理 ドロップダウンリストから必要なインスタンスIDを選択し、必要なシークレットを見つけて、操作 列の 詳細 をクリックします。

  3. [シークレットの詳細] ページで、Tag の横にあるimage.pngアイコンをクリックします。

  4. [タグの編集] ダイアログボックスで、複数の [タグキー][タグ値] を入力し、[OK] をクリックします。 表示されるメッセージで、[閉じる] をクリックします。

    [タグの編集] ダイアログボックスで、タグの値を変更したり、一度に複数のタグを削除したりできます。

一度に複数のシークレットのタグを設定

  1. KMS コンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、リソース > 資格情報管理 を選択します。

  2. シークレットのタイプに基づいてタブをクリックし、インスタンス管理 ドロップダウンリストから必要なインスタンスIDを選択し、シークレットリストから必要なシークレットを選択します。

    • タグの追加: シークレットリストの下部にある [タグの追加] をクリックします。 [タグの追加] ダイアログボックスで、複数の [タグキー][タグ値] を入力し、[OK] をクリックします。 表示されるメッセージで、[閉じる] をクリックします。

    • タグの削除: シークレットリストの下部にある [タグの削除] をクリックします。 [一括削除] ダイアログボックスで、削除するタグを選択し、[削除] をクリックします。 表示されるメッセージで、[閉じる] をクリックします。

よくある質問