読み込んでいます...
一致する結果は見つかりませんでした。

Google Cloud Skills Boost

Google Cloud コンソールでスキルを試す

06

Security Best Practices in Google Cloud - 日本語版

700 以上のラボとコースにアクセス

VM サービス アカウントとスコープの構成、使用、監査

ラボ 1時間 30分 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

概要

サービス アカウントは、個々のエンドユーザーではなく、仮想マシンに権限を付与する特種な Google アカウントです。サービス アカウントは主に、API と Google Cloud サービスへの安全で管理された接続を確立するために使用されます。信頼できる接続へのアクセスを許可し、悪意のある接続を拒否することは、どの Google Cloud プロジェクトでも不可欠なセキュリティ機能です。

目標

このラボでは、次の方法について学びます。

  • サービス アカウントを作成、管理する。
  • 仮想マシンを作成し、サービス アカウントに関連付ける。
  • クライアント ライブラリを使用して、サービス アカウントから BigQuery にアクセスする。
  • Compute Engine インスタンスから BigQuery の一般公開データセットに対してクエリを実行する。

設定と要件

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. Qwiklabs にシークレット ウィンドウでログインします。

  2. ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
    一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。

  5. [Google Console を開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
    他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

Google Cloud Shell の有効化

Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。

Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

  2. [続行] をクリックします。

環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  • 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list

出力:

Credentialed accounts: - @.com (active)

出力例:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project =

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: gcloud ドキュメントの全文については、 gcloud CLI の概要ガイド をご覧ください。

サービス アカウントとは

サービス アカウントは、個々のエンドユーザーではなく、アプリケーションや仮想マシン(VM)に属している特別な Google アカウントです。アプリケーションはサービス アカウントを使用して、サービスの Google API を呼び出します。ユーザーが関与する必要はありません。

たとえば、あるサービス アカウントで Compute Engine VM が実行される場合、必要なリソースへのアクセス権をそのアカウントに付与することができます。こうしてサービス アカウントはサービスの ID となり、サービス アカウントの権限によって、サービスがアクセスできるリソースが制御されます。

サービス アカウントは、アカウント固有のメールアドレスで識別されます。

サービス アカウントのタイプ

ユーザーが管理するサービス アカウント

Cloud コンソールを使用して新しい Cloud プロジェクトを作成するとき、Compute Engine API がプロジェクトで有効になっている場合は、デフォルトで Compute Engine サービス アカウントが作成されます。これは次のメールアドレスで識別できます: PROJECT_NUMBER-compute@developer.gserviceaccount.com

プロジェクトに App Engine アプリケーションが含まれている場合、デフォルトの App Engine サービス アカウントがプロジェクトにデフォルトで作成されます。これは次のメールアドレスで識別できます: PROJECT_ID@appspot.gserviceaccount.com

Google が管理するサービス アカウント

プロジェクトの IAM ポリシーや Cloud コンソールには、ユーザー管理のサービス アカウントに加えて、その他のサービス アカウントが表示される場合があります。これらのサービス アカウントは Google が作成し所有しているもので、さまざまな Google サービスを表します。各アカウントには Google Cloud プロジェクトにアクセスするための IAM のロールが自動的に付与されます。

Google API サービス アカウント

Google が管理するサービス アカウントの一例として、次のようなメールアドレスで識別できる Google API サービス アカウントがあります: PROJECT_NUMBER@cloudservices.gserviceaccount.com

このサービス アカウントは、自動的に内部 Google プロセスを実行するように設計されており、Cloud コンソールの [サービス アカウント] セクションには一覧表示されません。デフォルトでは、このアカウントには自動的にそのプロジェクトの編集者のロールが付与され、Cloud コンソールの [IAM] セクションに表示されます。

このサービス アカウントは、プロジェクトが削除された場合にのみ削除されます。Google サービスはプロジェクトにアクセスできるアカウントに依存しているため、プロジェクトでサービス アカウントのロールを削除したり変更したりしないでください。

タスク 1. サービス アカウントを作成、管理する

このタスクでは、サービス アカウントを作成して管理します。

デフォルトでは、1 つのプロジェクトに最大 100 個のユーザー管理サービス アカウントを作成できます。この割り当てがニーズを満たしていない場合は、Cloud コンソールを使用して割り当ての増加をリクエストできます。

注: このページで説明するデフォルトのサービス アカウントは、この割り当てのカウントには含められません。

サービス アカウントの作成

サービス アカウントの作成はプロジェクトへのメンバーの追加に似ていますが、サービス アカウントは個々のエンドユーザーではなくアプリケーションに属します。

  • サービス アカウントを作成するには、Cloud Shell で次のコマンドを実行します。
gcloud iam service-accounts create my-sa-123 --display-name "my service account"

コマンドの出力にはサービス アカウントが表示されます。たとえば、以下のようになります。

出力:

Created service account [my-sa-123]

サービス アカウントへのロールの付与

IAM のロールを付与する際には、サービス アカウントをリソースまたは ID として扱うことができます。

アプリケーションでは、Google Cloud サービスに対する認証のためにサービス アカウントを ID として使用します。たとえば、Compute Engine 仮想マシン(VM)をサービス アカウントとして実行している場合は、プロジェクト(リソース)のサービス アカウント(ID)に編集者のロールを付与できます。

それに加えて、誰が VM を起動できるかを制御することもできます。そのためには、サービス アカウント(リソース)に対する serviceAccountUser のロールをユーザー(ID)に付与します。

リソースに対するロールをサービス アカウントに付与する

サービス アカウントにロールを付与すると、Google Cloud プロジェクトのリソースに対して特定の操作を行う権限が付与されます。たとえば、storage.admin のロールが付与されたサービス アカウントでは、Cloud Storage のオブジェクトやバケットを管理できます。

  • 作成したサービス アカウントにロールを付与するには、Cloud Shell で次のコマンドを実行します。
gcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID \ --member serviceAccount:my-sa-123@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com --role roles/editor

出力には、サービス アカウントに現時点で付与されているロールの一覧が表示されます。

出力:

bindings: - members: - user:email1@gmail.com role: roles/owner - members: - serviceAccount:our-project-123@appspot.gserviceaccount.com - serviceAccount:123456789012-compute@developer.gserviceaccount.com - serviceAccount:my-sa-123@my-project-123.iam.gserviceaccount.com - user:email3@gmail.com role: roles/editor - members: - user:email2@gmail.com role: roles/viewer etag: BwUm38GGAQk= version: 1

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 サービス アカウントの作成と管理

ロールについて

ID を使って Google Cloud API を呼び出す場合、Cloud Identity and Access Management(Cloud IAM)によって、その ID がリソースを使用するために必要な権限を持っていることが求められます。権限を付与するには、ユーザー、グループ、またはサービス アカウントにロールを付与します。

ロールの種類

Cloud IAM には、次の 3 種類のロールがあります。

  • 基本ロール: Cloud IAM の導入前に存在していたオーナー、編集者、閲覧者のロールが含まれます。
  • 事前定義ロール: 特定のサービスへのアクセスを細かく制御します。このロールは Google Cloud により管理されます。
  • カスタムロール: ユーザー指定の権限のリストに応じたきめ細かなアクセス権が提供されます。

詳しくは、IAM ロールのリファレンス ドキュメントをご覧ください。

タスク 2. クライアント ライブラリを使用して、サービス アカウントから BigQuery にアクセスする

このタスクでは、必要なロールを持つサービス アカウントを使用して、インスタンスから BigQuery の一般公開データセットに対してクエリを実行します。

サービス アカウントを作成する

最初に、Cloud コンソールで新しいサービス アカウントを作成します。

  1. Cloud コンソールのナビゲーション メニューで、[IAM と管理] > [サービス アカウント] をクリックします。
  2. [サービス アカウントを作成] をクリックします。
  3. サービス アカウント名に「bigquery-qwiklab」を指定します。

  1. [作成して続行] をクリックします。
  2. ロールに [BigQuery] > [BigQuery データ閲覧者] を指定します。
  3. [別のロールを追加] をクリックします。
  4. その別のロールに [BigQuery] > [BigQuery ユーザー] を指定します。

  1. [続行] をクリックします。

Cloud コンソールには次のように表示されます。

  1. [完了] をクリックします。

VM インスタンスを作成する

  1. Cloud コンソールのナビゲーション メニューで、[Compute Engine] > [VM インスタンス] をクリックし、[インスタンスを作成] をクリックします。
  2. 次の情報を指定して VM を作成します。

構成

名前

bigquery-instance

リージョン

us-central1(アイオワ)

ゾーン

us-central1-a

シリーズ

E2

マシンタイプ

e2-standard-2 (2 vCPU)

ブートディスク

Debian GNU/Linux 11(bullseye)

サービス アカウント

bigquery-qwiklab

アクセス スコープ

すべての Cloud API に完全アクセス権を許可

注: bigquery-qwiklab サービス アカウントがプルダウン リストに表示されない場合は、[フィルタ] セクションに名前を入力してください。

次に、Shielded VM をサポートするブートディスクを選択して追加されたオプションを確認します。

  1. ページの下のほうにある [ネットワーク、ディスク、セキュリティ、管理、単一テナンシー] リンクをクリックします。

  2. [セキュリティ] タブをクリックします。タブの上部に、Shielded VM のオプションが表示されます。Shielded VM 機能を含むブートディスクを選択しなかった場合は、これらのオプションは表示されません。これらのオプションの一部は、デフォルトで選択されています。

  3. [セキュアブートをオンにする] チェックボックスをオンにします。

Compute Engine は、デフォルトでこのオプションを有効にしません。これは、署名されていないドライバやその他の低レベルのソフトウェアには互換性がない場合があるためです。それでも、可能であればセキュアブートを有効にすることをおすすめします。

  1. [作成] をクリックします。

Compute Engine インスタンス上でサンプルコードを作成する

  1. Cloud コンソールで、[Compute Engine] > [VM インスタンス] に移動します。
  2. [SSH] ボタンをクリックして bigquery-instance に SSH 接続します。[接続] をクリックします。
  3. SSH ウィンドウで、次のコマンドを実行して必要な依存関係をインストールします。
sudo apt-get update -y sudo apt-get install -y git python3-pip sudo pip3 install six==1.13.0 sudo pip3 install --upgrade pip sudo pip3 install --upgrade google-cloud-bigquery sudo pip3 install pandas
  1. echo コマンドを使用して、query.py を作成します。このファイルは Python で作成されており、クエリを実行する際に使用します。
echo " from google.auth import compute_engine from google.cloud import bigquery credentials = compute_engine.Credentials( service_account_email='YOUR_SERVICE_ACCOUNT') query = ''' SELECT year, COUNT(1) as num_babies FROM publicdata.samples.natality WHERE year > 2000 GROUP BY year ''' client = bigquery.Client( project='YOUR_PROJECT_ID', credentials=credentials) print(client.query(query).to_dataframe()) " > query.py
  1. 次のコマンドでプロジェクト ID を query.py に追加します。
sed -i -e "s/YOUR_PROJECT_ID/$(gcloud config get-value project)/g" query.py
  1. 次のコマンドを実行して、sed コマンドによりファイル内のプロジェクト ID が正しく変更されたことを確認します。
cat query.py

出力例(実際のものとは異なります):

from google.auth import compute_engine from google.cloud import bigquery credentials = compute_engine.Credentials( service_account_email='YOUR_SERVICE_ACCOUNT') query = ''' SELECT year, COUNT(1) as num_babies FROM publicdata.samples.natality WHERE year > 2000 GROUP BY year ''' client = bigquery.Client( project='qwiklabs-gcp-186de687ef87f911', credentials=credentials) print(client.query(query).to_dataframe())
  1. 次のコマンドでサービス アカウントのメールアドレスを query.py に追加します。
sed -i -e "s/YOUR_SERVICE_ACCOUNT/bigquery-qwiklab@$(gcloud config get-value project).iam.gserviceaccount.com/g" query.py
  1. 次のコマンドを実行して、sed コマンドによりファイル内のサービス アカウント メールが正しく変更されたことを確認します。
cat query.py

出力例(実際のものとは異なります):

from google.auth import compute_engine from google.cloud import bigquery credentials = compute_engine.Credentials( service_account_email='bigquery-qwiklab@qwiklabs-gcp-186de687ef87f911.iam.gserviceaccount.com') query = ''' SELECT year, COUNT(1) as num_babies FROM publicdata.samples.natality WHERE year > 2000 GROUP BY year ''' client = bigquery.Client( project='qwiklabs-gcp-186de687ef87f911', credentials=credentials) print(client.query(query).to_dataframe())

これでアプリケーションは、このサービス アカウントに関連付けられている権限を使用できるようになります。

  1. 次のコマンドで pyarrow ライブラリをインストールします。
sudo pip3 install pyarrow==16.1.0
  1. 次のコマンドで db-dtypes ライブラリをインストールします。
sudo pip3 install db-dtypes
  1. 次のコマンドで query.py を実行します。
python3 query.py

次のような出力が表示されます。

出力:

year num_babies 0 2008 4255156 1 2002 4027376 2 2005 4145619 3 2006 4273225 4 2001 4031531 5 2007 4324008 6 2003 4096092 7 2004 4118907 注: 実際の行の値は、上記の出力の年に対応していない可能性があります。ただし、年ごとの赤ちゃんの数は同じであることを確認してください。

bigquery-qwiklab サービス アカウントを使用して BigQuery の一般公開データセットにリクエストが送信されました。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 クライアント ライブラリを使用して、サービス アカウントから BigQuery にアクセスする

お疲れさまでした

このラボでは、以下の操作について学習しました。

  • サービス アカウントを作成、管理する。
  • 仮想マシンを作成し、サービス アカウントに関連付ける。
  • クライアント ライブラリを使用して、サービス アカウントから BigQuery にアクセスする。
  • Compute Engine インスタンスから BigQuery の一般公開データセットに対してクエリを実行する。

ラボを終了する

ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

前へ 次へ

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
プレビュー