このガイドでは、Cloud Asset Inventory Analyze Move API を使用して、プロジェクトを実際に移動する前に、重要なポリシー システムのリストから警告と障壁に関する詳細なレポートを取得する方法について説明します。
API を有効にする
API コンシューマ プロジェクとしてプロジェクトを選択または作成し、Cloud Asset API を有効にする
このコンシューマ プロジェクトは、分析と移行を計画しているプロジェクトとは異なるものにできます。コンシューマ プロジェクトは、API リクエストを行うための認証情報の生成に使用されます。
次のセクションでは、分析するソース プロジェクトに関して付与する必要があるロールと権限について説明します。
必要な権限
プロジェクト移動分析を実行するには、cloudasset.assets.analyzeMove 権限(Cloud Asset 閲覧者や閲覧者など)を付与するロールが必要です。
サービスに関する分析を受け取るには、それらのサービスに関連するロールも必要です。権限には以下のようなものがあります。
- ソース プロジェクトの親組織リソースから継承した許可ポリシーを表示する場合、ソース プロジェクトの親組織リソースに対する - resourcemanager.organizations.getIamPolicy権限が必要です。
- ソース プロジェクトの親フォルダから継承した許可ポリシーを表示する場合、ソース プロジェクトの親フォルダに対する - resourcemanager.folders.getIamPolicy権限が必要です。
- プロジェクトの許可ポリシーを表示する場合、ソース プロジェクトに対する - resourcemanager.projects.getIamPolicy権限が必要です。
- ソース プロジェクトの親組織リソースから継承した拒否ポリシーを表示する場合、ソース プロジェクトの親組織リソースに対する - iam.denypolicies.get権限が必要です。
- このプロジェクトに継承されている組織のポリシーを表示するには、ソース プロジェクトに対する - orgpolicy.policy.get権限が必要です。
- このプロジェクトに対する継承された Compute Engine ファイアウォール ポリシーを表示するには、ソースフォルダまたは組織リソースに対する - compute.organizations.setSecurityPolicy権限が必要です。
- このプロジェクトの継承されたタグを表示する場合、ソース プロジェクトまたはその祖先ノードに対する - resourcemanager.hierarchyNodes.listEffectiveTags権限が必要です。
分析を実行する
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 です。例:- --myProject123
- FOLDER_IDは、分析を実行する宛先フォルダのフォルダ ID を表す数値です。例:- 45678901123
- ORGANIZATION_IDは、分析を実行する移行先組織の組織 ID を表す数値です。例:- 78901123456
API
移行を実行せずに、プロジェクトをリソース階層の現在の位置から移行した場合の影響を分析するには、cloudasset.analyzeMove メソッドを使用します。
GET https://cloudasset.googleapis.com/v1/{resource=*/*}: \
  analyzeMove?destinationParent=DESTINATION_NAME
どこへ:
- resourceは、分析を実行するリソースの名前です。プロジェクト リソースのみがサポートされているため、これはプロジェクト ID またはプロジェクト番号である必要があります。たとえば、- projects/my-project-idや- projects/12345です。
- DESTINATION_NAMEは、ターゲット リソースの親を変更するCloud de Confiance フォルダまたは組織リソースの名前です。分析は、リソースを指定された宛先親に移動した場合の影響に対して実行されます。宛先は、フォルダ番号または組織リソース番号である必要があります。たとえば、- folders/123や- organizations/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 は、組織リソース間でプロジェクトを移動する際に、阻害要因などの問題を軽減するのに役立つ詳細情報を提供します。組織リソース間のプロジェクトの移行の詳細については、プロジェクトの移行をご覧ください。