権限の構成

このトピックでは、Cloud Asset Inventory API を呼び出すために必要な権限と認証情報を構成する方法について説明します。

認証

Cloud Asset Inventory API を呼び出す前に、エンドユーザーまたはサービス アカウントとして認証を行う必要があります。認証の詳細については、認証の概要をご覧ください。

gcloud ツールに必要な権限の付与

gcloud ツールを使用して Cloud Asset Inventory API にアクセスするには、ターゲット リソースの親に対して必要な権限(組織、プロジェクト、フォルダのいずれか)を付与する必要があります。API リクエストの parent フィールドにこの親を指定する必要があります。

アカウントに親となる Cloud Asset Owner ロール(roles/cloudasset.owner)またはオーナーの基本ロール(roles/owner)がある場合、Cloud Asset Inventory API を呼び出すための十分な権限が付与され、認証情報のダウンロードまでスキップできます。Cloud Asset Inventory のロールの詳細については、ロールをご覧ください。

役割の付与

アカウントにロールを付与するには、gcloud コマンドライン ツールで次の手順を行います。gcloud ツールをインストールして初期化する方法をご覧ください。

ユーザー アカウント

必要なロールをユーザー アカウントに付与するには、次の手順を行います。

  1. ユーザー アカウントでログインするには、次のコマンドを実行します。

    gcloud auth login USER_ACCOUNT_EMAIL
    
  2. ユーザー アカウントに、ルート(親)リソースの Cloud Asset 閲覧者のロール(roles/cloudasset.viewer)または Cloud Asset オーナーのロール(roles/cloudasset.owner)を付与します。このプロジェクトは、Cloud Asset Inventory API が有効になっているプロジェクトでもかまいません。

    ユーザー アカウントに Cloud Asset 閲覧者のロールを付与するには、次のコマンドを実行します。

    gcloud projects add-iam-policy-binding TARGET_PROJECT_ID \
         --member user:USER_ACCOUNT_EMAIL \
         --role roles/cloudasset.viewer
    

    gcloud asset コマンドに --billing-project フラグを追加して、Cloud Asset Inventory API が有効になっている請求先プロジェクトを指定できます。

    --billing-project PROJECT_ID
    

    このフラグを指定すると、アカウントには PROJECT_ID プロジェクトに対する serviceusage.services.use 権限が必要となります。この権限を含む事前定義されたロールの一覧については、ロールについてをご覧ください。

サービス アカウント

必要なロールをサービス アカウントに付与するには、次の手順を行います。サービス アカウントの詳細については、サービス アカウントの作成と管理をご覧ください。

  1. 新しいサービス アカウントを作成するには、次のコマンドを実行します。Cloud Asset Inventory API が有効になっているプロジェクトにすでにサービス アカウントがある場合は、この手順を省略できます。

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
           --display-name "SERVICE_ACCOUNT_DISPLAY_NAME"
    
  2. サービス アカウントに、ルート(親)リソースの Cloud Asset 閲覧者のロール(roles/cloudasset.viewer)または Cloud Asset オーナーのロール(roles/cloudasset.owner)を付与します。このプロジェクトは、Cloud Asset Inventory API が有効になっているプロジェクトと同じプロジェクトにできます。

    サービス アカウントに Cloud Asset 閲覧者のロールを付与するには、次のコマンドを実行します。

    gcloud projects add-iam-policy-binding TARGET_PROJECT_ID \
            --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
            --role roles/cloudasset.viewer
    
  3. サービス アカウントの秘密鍵を作成するには、次のコマンドを実行します。

    gcloud iam service-accounts keys create YOUR_FILE_PATH/key.json \
            --iam-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    
  4. サービス アカウントを gcloud ツールで使用するには、次のコマンドを実行します。

    gcloud auth activate-service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
            --key-file=YOUR_FILE_PATH/key.json
    

JSON 認証情報のダウンロード

gcloud ツールを使用せずに Cloud Asset Inventory API にアクセスするには、JSON 認証情報ファイルが必要です。ファイルをダウンロードする手順は次のとおりです。

  1. Cloud Console の [認証情報] ページに移動します。

    [認証情報] ページに移動

  2. [+ 認証情報を作成]、[OAuth クライアント ID] の順に選択します。

  3. 新しいプロジェクトでクライアント ID を作成する場合は、最初に OAuth 同意画面を設定する必要があります。クライアント ID を使用するアプリケーションがプライベート データへのアクセスをリクエストするたびに、Cloud Console に同意画面が表示されるようになります。

    同意画面を構成するには、次の手順を行います。

    1. [同意画面の構成] を選択し、必要な情報を入力します。

    2. 変更を保存します。

  4. [クライアント ID の作成] ページの [アプリケーションの種類] で、適切なタイプを選択します。クライアント タイプの詳細については、OAuth 2.0 の設定をご覧ください。

  5. 認証情報の名前を入力し、[作成] をクリックします。

  6. [OK] をクリックして、表示されたダイアログ ボックスを閉じます。Cloud Asset Inventory API での認証に、クライアント ID とシークレット値は使用されません。また、どちらの値もクレデンシャル JSON ファイルから取得できます。

  7. 新しいクライアント ID JSON ファイルを保存するには、[] をクリックします。

  8. ダウンロードした JSON ファイルの名前を変更して、適切なパスに移動できます。以下の例では、パスに ~/credentials.json を使用します。

認証情報の設定の確認

認証情報を正しく設定したかを確認するには、次のコマンドを実行します。

   oauth2l header --json ~/credentials.json cloud-platform
   

出力は次のようになります。

Authorization: Bearer y29.xxxxxxx

シェル エイリアスの定義

Google Cloud REST API を呼び出すシェル エイリアスを定義することをおすすめします。

Google Cloud REST API を呼び出すための gcurl エイリアスを定義するには、次のコマンドを実行します。

   alias gcurl='curl -H "$(oauth2l header --json ~/credentials.json \
     cloud-platform)" -H "Content-Type: application/json" '