プロジェクトの移動を分析する

このガイドでは、Cloud Asset Inventory Analyze Move API を使用して、プロジェクトを実際に移動する前に、重要なポリシー システムのリストから警告と障壁に関する詳細なレポートを取得する方法について説明します。

API を有効にする

API コンシューマ プロジェクトとしてプロジェクトを選択または作成し、Cloud Asset API を有効にします。

このコンシューマ プロジェクトは、分析と移行を計画しているプロジェクトとは異なるものにすることが可能性です。コンシューマ プロジェクトは、API リクエストを行うための認証情報の生成に使用されます。

次のセクションでは、分析するソース プロジェクトに関して付与する必要があるロールと権限について説明します。

権限の割り当て

プロジェクト移動分析を実行するには、Cloud Asset 閲覧者閲覧者などの cloudasset.assets.analyzeMove 権限を付与するロールが必要です。

サービスに関する分析を受け取るには、それらのサービスに関連するロールも必要です。権限には以下のようなものがあります。

  • ソース プロジェクトの親組織から継承した IAM ポリシーを表示するには、ソース プロジェクトの親組織に対する resourcemanager.organizations.getIamPolicy 権限が必要です。

  • ソース プロジェクトの親フォルダから継承した IAM ポリシーを表示するには、ソース プロジェクトの親フォルダに対する resourcemanager.folders.getIamPolicy 権限が必要です。

  • プロジェクトの IAM ポリシーを表示するには、ソース プロジェクトに対する resourcemanager.projects.getIamPolicy 権限が必要です。

  • このプロジェクトに継承されている組織のポリシーを表示するには、ソース プロジェクトに対する orgpolicy.policy.get 権限が必要です。

  • このプロジェクトに対する継承された Compute Engine ファイアウォール ポリシーを表示するには、ソースフォルダまたは組織に対する compute.organizations.setSecurityPolicy 権限が必要です。

分析を実行する

gcloud コマンドライン ツールまたは API を使用して、リソース階層の現在の位置からのリソースの移行を分析できます。

gcloud

プロジェクトの移行による影響を分析するには、gcloud asset analyze-move コマンドを使用します。

gcloud asset analyze-move --project=PROJECT_ID \
  --DESTINATION_ID

ここで

  • PROJECT_ID は、移行するプロジェクトの一意の ID です。例: projects/12345678901

  • DESTINATION_ID は、プロジェクトを移行する先となる移行先の組織またはフォルダのリソースタイプと ID です。例: --destination-folder=45678901123 または --destination-organization=78901123456

API

プロジェクトの移行の影響を分析するには、cloudasset.analyzeMove メソッドを使用します。

GET https://cloudasset.googleapis.com/v1/resource=projects/ \
  PROJECT_NAME:analyzeMove?destinationParent=DESTINATION_ID

ここで

  • PROJECT_NAME は、移行するプロジェクトの名前です。例: foo-project

  • DESTINATION_ID は、プロジェクトを移行する先となる移行先の組織またはフォルダの ID です。例: folders/45678901123 または --organizations/78901123456

分析のレスポンスを移動する

Move Analysis API から受け取ったレスポンスは、サービス名でグループ化されます。各サービスには、このプロジェクトの移行に適用される警告と障壁のリストがあります。この分析で返される障壁があることは、それらを解消する前に移動に進むと、ランタイム時にプロジェクトの移行がブロックされることを意味します。

エラーのトラブルシューティング

Move Analysis API から返されたエラーがある場合、標準のgRPC コードおよび、Move Analysis API でプロジェクトの分析が失敗した理由を説明するメッセージが含まれます。

次の表に、Move Analysis API から返される可能性のあるエラーコードを示します。

エラー名 エラーコード 説明
引数が無効です 3 無効な引数(正しくないリソース名など)を指定してプロジェクトで API を呼び出した場合に返されます。
アクセスの拒否 7 分析を実行するために必要な権限がない場合、またはソース プロジェクトが存在しない場合に返されます。
内部 13 Identity and Access Management や組織のポリシーなど、ポリシー システムの呼び出しに問題がある場合に返されます。これは、移行が出来ないことを示しておらず、停止のためにサービスを確認してから分析を再試行できます。
使用不可 14 内部システムが同期していない場合に返されます。これは、移行が出来ないことを示しておらず、分析を再試行できます。
未認証 16 この分析を実行するための正しい認証情報を指定しなかった場合に返されます。

エラー メッセージの例

次の例に、移行するプロジェクトの cloudasset.assets.analyzeMove 権限を持っていないユーザーに返されるエラーコードを示します。

{
  "error": {
  "code": 403,
  "message": "Failed to fetch Project: projects/test-project-service-3 to perform
              move analysis.",
  "status": "PERMISSION_DENIED"}
}

一部のポリシー システムでは、リソース移動の分析に失敗する場合があります。次の例に、ユーザーが移行するプロジェクトの compute.organizations.setSecurityPolicy 権限を持っていない場合に、階層型ファイアウォール サービスから返されたエラーを示します。

{
  "moveAnalysis": [{
    "displayName": "name hidden",
    "analysis": {
      "warnings": [{
        "detail": "details hidden"
      }]
    }
  }, {
    "displayName": "name hidden",
    "analysis": {
      "warnings": [{
        "detail": "details hidden"
      }]
    }
  }, {
    "displayName": "Hierarchical Firewall",
    "error": {
      "code": 7,
      "message": "Failed to retrieve inherited security policies to perform
                  analysis. Required 'compute.organizations.setSecurityPolicy'
                  permission for {resource ID}"
     }}]
}

次のステップ

Move Analysis API は、ある組織から別の組織にプロジェクトを移動する際に、障壁とその他の問題を軽減するのに役立つ詳細情報を提供します。組織間のプロジェクトの移行について詳しくは、プロジェクトの移行をご覧ください。