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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

API を有効にする

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

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

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

権限を割り当てる

プロジェクト移動分析を実行するには、cloudasset.assets.analyzeMove 権限(Cloud Asset 閲覧者閲覧者など)を付与するロールが必要です。 タグを分析するための resourcemanager.hierarchyNodes.listEffectiveTags 権限を付与するタグユーザーなどのロールも必要です。

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

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

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

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

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

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

分析を実行する

Google Cloud CLI や API を使用して、リソース階層の現在の場所からリソースの移行を分析できます。

gcloud

プロジェクトをリソース階層の現在の位置から移行した場合の影響を分析するには、gcloud asset analyze-move コマンドを使用します。

gcloud asset analyze-move --project=PROJECT_ID \
  (--destination-folder=FOLDER_ID \
    | --destination-organization=ORGANIZATION_ID)

プロジェクトを別のフォルダに移動した場合の影響を分析するには、--destination-folder を使用してコマンドを実行します。

gcloud asset analyze-move --project=PROJECT_ID \
  --destination-folder=FOLDER_ID

プロジェクトを別の組織に移動した場合の影響を分析するには、--destination-organization を使用してコマンドを実行します。

gcloud asset analyze-move --project=PROJECT_ID \
  --destination-organization=ORGANIZATION_ID

ここで

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

  • FOLDER_ID は、分析を行う移行先フォルダの ID です。例: --destination-folder=45678901123

  • ORGANIZATION_ID は、分析を行う移行先組織の ID です。例: --destination-organization=78901123456

API

移行を実行せずに、プロジェクトをリソース階層の現在の位置から移行した場合の影響を分析するには、cloudasset.analyzeMove メソッドを使用します。

GET https://cloudasset.googleapis.com/v1/{resource=*/*}: \
  analyzeMove?destinationParent=DESTINATION_NAME

ここで

  • resource は、分析を実行するリソースの名前です。プロジェクト リソースのみがサポートされています。このため、プロジェクト ID またはプロジェクト番号を指定する必要があります。たとえば、projects/my-project-idprojects/12345 です。

  • DESTINATION_NAME は、ターゲット リソースの親となる Google Cloud フォルダまたは組織の名前です。分析は、リソースを指定された宛先の親に移動した場合の影響で実施されます。宛先は、フォルダ番号または組織番号である必要があります。たとえば、folders/123organizations/123 です。

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

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 は、組織間でプロジェクトを移動する際に、阻害要因などの問題を軽減するのに役立つ詳細情報を提供します。組織間のプロジェクト移行の詳細については、プロジェクトの移行をご覧ください。