このガイドでは、Cloud Asset Inventory Analyze Move API を使用して、プロジェクトを実際に移動する前に、重要なポリシー システムのリストから警告と障壁に関する詳細なレポートを取得する方法について説明します。
API を有効にする
API コンシューマ プロジェクとしてプロジェクトを選択または作成し、Cloud Asset API を有効にする
このコンシューマ プロジェクトは、分析と移行を計画しているプロジェクトとは異なるものにできます。コンシューマ プロジェクトは、API リクエストを行う認証情報を生成するために使用されます。
次のセクションでは、分析するソース プロジェクトに関して付与する必要があるロールと権限について説明します。
権限の割り当て
プロジェクト移動分析を実行するには、cloudasset.assets.analyzeMove
権限(Cloud Asset 閲覧者や閲覧者など)を付与するロールが必要です。
サービスに関する分析を受け取るには、それらのサービスに関連するロールも必要です。権限には以下のようなものがあります。
ソース プロジェクトの親組織リソースから継承した IAM ポリシーを表示する場合、ソース プロジェクトの親組織リソースに対する
resourcemanager.organizations.getIamPolicy
権限が必要です。ソース プロジェクトの親フォルダから継承した IAM ポリシーを表示する場合、ソース プロジェクトの親フォルダに対する
resourcemanager.folders.getIamPolicy
権限が必要です。プロジェクトの IAM ポリシーを表示する場合、ソース プロジェクトに対する
resourcemanager.projects.getIamPolicy
権限が必要です。このプロジェクトに継承されている組織のポリシーを表示するには、ソース プロジェクトに対する
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
は、ターゲット リソースを再配置する Google Cloud フォルダまたは組織リソースの名前です。指定した宛先の親にリソースを移行した場合の影響に対して分析が行われます。宛先はフォルダ番号または組織リソース番号でなければなりません。たとえば、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 は、組織リソース間でプロジェクトを移動する際に、阻害要因などの問題を軽減するのに役立つ詳細情報を提供します。組織リソース間のプロジェクト移行の詳細については、プロジェクトの移行をご覧ください。