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

Key Management Service:リージョン間で秘密を移行する

最終更新日:Jan 20, 2025

効率的で高品質なサービスを提供するには、特定のリージョンとゾーンにアップグレードと改善が必要です。 移行通知を受け取った場合は、できるだけ早い機会にキー管理サービス (KMS) キーとシークレットを移行する必要があります。 このトピックでは、KMSのシークレットをリージョン間で移行する方法について説明します。

一般的な秘密

KMSインスタンスでジェネリックシークレットを移行する場合は、移行先リージョンでKMSインスタンスを購入し、バックアップと復元を使用してシークレットを移行する必要があります。 詳細については、「バックアップ」をご参照ください。 KMSインスタンスの外部にジェネリックシークレットを移行する場合は、ソースリージョンのジェネリックシークレットに関する情報を照会してから、ターゲットリージョンで同じ情報を持つジェネリックシークレットを作成する必要があります。

説明

KMSの旧バージョンでは、KMSインスタンスを購入する必要なしにジェネリックシークレットを作成できます。 このタイプのジェネリックシークレットは、KMSインスタンス外のシークレットと見なされます。 KMS 3.0では、ジェネリックシークレットを作成する前にKMSインスタンスを購入する必要があります。

使用上の注意

  • シークレットの移行中は、移行が完了してソースリージョンのシークレットを削除するまで、ソースリージョンのシークレットに対して操作を実行しないでください。 たとえば、秘密のメタデータを変更したり、PutSecretValue操作を呼び出して秘密のバージョンを作成したりしないでください。

  • 移行が完了した後、シークレットの作成時間とシークレットバージョンの作成時間は、ソースリージョンとターゲットリージョンで異なります。 ただし、この不一致はサービスには影響しません。

手順

  1. ソースリージョンで管理するシークレットの詳細を照会して保存します。

    APIを呼び出して、シークレットのメタデータ、すべてのシークレットバージョン、各シークレットバージョンのシークレット値など、シークレットに関する情報を照会して保存できます。

    API 操作

    説明

    DescribeSecret

    説明

    FetchTagsをtrueに設定します。

    シークレットに関するメタデータ情報を照会します。

    ListSecretVersionIds

    説明

    IncludeDeprecatedをtrueに設定します。

    シークレットのすべてのシークレットバージョンを照会します。

    レスポンスのVersionIdsで示されるIDは、作成時刻によってソートされません。 オンプレミスの作成時間でIDを並べ替えます。 たとえば、次の3つのバージョンが返されます。

    1. バージョンv1。2023年1月1日に作成された初期バージョンで、ステータスは001です。

    2. バージョンv2。2023年5月1日に作成され、ステータスはACSPreviousです。

    3. バージョンv3。2023年11月1日に作成され、ステータスはACSCurrentです。

    GetSecretValue

    シークレット値を照会します。 各秘密バージョンは秘密値に対応する。 各シークレットバージョンのシークレット値とシークレット値タイプを照会する必要があります。

  2. アプリケーションをターゲットリージョンに移行し、設定を変更します。

    1. アプリケーションをターゲットリージョンに移行します。

    2. アプリケーションの資格情報を作成します。

      1. アプリケーションがソースリージョンのResource Access Management (RAM) ユーザーまたはRAMロールのAccessKeyペアを使用する場合は、RAMユーザーまたはRAMロールを作成し、AliyunKMSSecretAdminAccessポリシーをターゲットリージョンのRAMユーザーまたはRAMロールにアタッチします。 詳細については、「RAMユーザーの作成とRAMユーザーへのアクセス許可の付与」および「RAMロールの作成と必要なポリシーのロールへのアタッチ」をご参照ください。

      2. アプリケーションがソースリージョンのアプリケーションアクセスポイント (AAP) のクライアントキーを使用する場合は、ターゲットリージョンにクライアントキーを作成します。 詳細については、「AAPの作成」をご参照ください。

        説明

        AAPを作成する前に、KMSインスタンスを購入する必要があります。

    3. アプリケーションのエンドポイントと資格情報の設定を変更します。

      説明

      KMSエンドポイントは、KMSインスタンスエンドポイントとは異なります。 使用するSDKに基づいてエンドポイントを設定します。 エンドポイントの詳細については、「SDKリファレンス」をご参照ください。

  3. ターゲットリージョンでシークレットを作成します。

    1. KMSインスタンスを購入します。 詳細については、「インスタンスの選択」および「KMSインスタンスの購入と有効化」をご参照ください。

    2. KMSインスタンスにキーを作成して、シークレットを暗号化します。 詳細については、「キーの使用開始方法」をご参照ください。

    3. API操作を呼び出してシークレットを作成します。 メタデータ、すべてのシークレットバージョン、およびシークレットの各シークレットバージョンのシークレット値は、ソースリージョンとターゲットリージョンで同じである必要があります。

      API

      説明

      CreateSecret

      ジェネリックシークレットを作成します。

      • secretName、secretType、Tags、説明、およびExtendedConfig: ソースリージョンでDescribeSecret操作を呼び出して取得する値を入力します。

      • VersionId: ソースリージョンでListSecretVersionIds操作を呼び出して取得する初期バージョンを入力します。 この例では、v1が使用されます。

      • SecretDataとSecretDataType: ソースリージョンでGetSecretValue操作を呼び出して取得する初期バージョンのシークレット値とシークレット値の型を入力します。 この例では、初期バージョンはv1です。

      PutSecretValue

      すべての秘密のバージョンをシークレットに格納します。

      シークレットが作成されると、初期バージョンはすでにシークレットに格納されています。 この場合、秘密の残りのバージョンのみを保存する必要があります。 この例では、v2とv3を格納する必要があります。

      UpdateSecretVersionStage

      すべての秘密バージョンのステータスを設定します。

      この例では、v1のバージョンステータスは001に設定され、v2のバージョンステータスはACSPreviousに設定され、v3のバージョンステータスはACSCurrentに設定されます。

    4. DescribeSecret操作を呼び出して、シークレットに関する情報がソースリージョンとターゲットリージョンで同じかどうかを確認します。

  4. シークレットをアプリケーションに統合した後、アプリケーションが期待どおりに実行できるかどうかを確認します。

  5. ソースリージョンでシークレットを使用する必要がなくなったことを確認したら、ソースリージョンのシークレットを削除します。 詳細については、「ジェネリックシークレットの管理と使用」をご参照ください。

    説明

    ActionTrailを使用して、シークレットの最近の呼び出しを表示できます。 詳細については、「ActionTrailを使用したKMSイベントの照会」をご参照ください。 ActionTrailでサポートされているイベントの詳細については、「KMSのイベントの監査」をご参照ください。 シークレット関連のイベントには、GetSecretValue、DescribeSecret、ListSecretVersionIds、PutSecretValue、UpdateSecretVersionStage、UpdateSecretRotationPolicy、RestoreSecretが含まれます。

RAMシークレット

移行はサポートされていません。

RAMユーザーがKMSで作成できるシークレットは1つだけです。 ソースリージョンのRAMシークレットを削除してから、ターゲットリージョンにRAMシークレットを作成する必要があります。

警告
  • KMSからRAMシークレットを削除する前に、RAMシークレットを使用しないようにしてください。

  • KMSからRAMシークレットを削除しても、関連するAccessKeyペアは削除されません。

ApsaraDB RDSシークレット

移行は必要ありません。

ApsaraDB RDSインスタンスはリージョン固有のリソースです。 必要なシークレットを移行する必要はありません。

ECSシークレット

移行は必要ありません。

ECS (Elastic Compute Service) インスタンスは、リージョン固有のリソースです。 必要なシークレットを移行する必要はありません。