BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【GCP】GCPクイックスタートガイド④ -認証情報と権限の設定-

こんにちは!
BFT名古屋支店の佐野です。

今回は佐野が勝手に進めるブログプロジェクト「GCPクイックスタートガイド」の第4回です。
第3回では、GCPを利用したシステムの土台となるプロジェクトの作成を行ない、利用の準備を整えました。
第4回も、GCP利用の準備のひとつ、GCPサービスを利用するための認証情報や権限の設定手順を扱っていきます。


GCP上で使う認証情報と権限

認証情報や権限と聞くと、前回使用したGoogleアカウントなどの「ログインに使用する情報」を想像するかもしれません。 それもひとつの側面ですが、ここでの認証情報は「Google APIにアクセスするために使用される情報」のことを指し、ユーザーだけでなくGCPリソースが利用する鍵や資格情報を含みます。
Google APIとはすなわちGCPサービスのことで、GCPのサービスはすべてAPIによって実行・処理が行われます。
そのため、GCPサービスを利用するためには、利用元に利用するための情報と権限が必要となるのです。

GCPにおいてこの認証情報と権限に特に当てはまるものとして以下の4つが挙げられます。

  1. ユーザーアカウント(Googleアカウント)
    GCPにおけるユーザーアカウントは、GCPを始める際に使ったGmailアカウントと同様にGoogleアカウントとなるものです。
    GCPプロジェクトにユーザーを追加する場合は、既にGoogleアカウントであるGmailアカウントやGoogle WorkspaceおよびCloud Identityで管理されたユーザーを使ってもよいですし、GCP上で新たに作成することもできます。
  2. サービス アカウント
    サービス アカウントは、仮想マシンやアプリケーションに他のGCPサービスを利用するための権限を与えるためのアカウントです。
    処理の中でGCPサービスにアクセスしたい場合、前もってサービスアカウントを仮想マシンなどに割り当てたり、処理中にサービスアカウントのキーを読み込むことで、そのサービスアカウントに設定された権限を利用できます。 サービス アカウントのキーはJSONフォーマットで提供され、公開鍵、秘密鍵、サービスアカウントの情報などが含まれています。
  3. OAuth 2.0 トーク
    OAuth 2.0 トークンは、ユーザーが GCP リソースにアクセスする際に使用される認証情報です。
    ユーザーがブラウザを介して GCP リソースにアクセスする場合、OAuth 2.0 を使用して認証され、アクセス トークンが生成されます。
  4. クライアント ID とクライアント シークレット
    クライアント ID とクライアント シークレットは、OAuth 2.0 フローにおいてクライアント アプリケーションが認証するための情報です。
    これらは、Web アプリケーション、ネイティブ アプリケーション、またはサービス アカウントの認証に使用されます。

このうち、GCP上で設定するケースが多いのは(1)ユーザーアカウントと(2)サービス アカウントです。
そのふたつの設定・追加の仕方を見ていきましょう。


ユーザーアカウント(Googleアカウント)を追加・設定する

既にGCPを利用している、あるいはこのクイックスタードガイドを読んで新たにGCPの環境を用意している方は、Googleアカウントでもあるユーザーアカウントは既にひとつ以上持っています。
そこからさらに同じGCPプロジェクトを利用するユーザーを増やしたい場合、「IAM」コンソール上でユーザーを追加できます。

ユーザーを追加し、追加するユーザーにアクセス権を追加するには、まずナビゲーションメニューから「IAMと管理」を選び、その配下の「IAM」を選択します。

「IAM」コンソールに入るまで

そして「アクセス権の付与」を選択します。

「アクセス権の付与」を選択

すると新たなプリンシパルと、それに付与するロールを選択する画面になるので、プリンシパルに追加するユーザーのGoogleアカウント(メールアドレス)を入力し、付与するロールをプルダウンから選択してください。 その後「保存」を選択することでユーザーが追加されます。

ユーザーの追加

ユーザーの権限を変更する場合、IAMコンソールに一覧で表示されているユーザーの中から、変更したいユーザーの右側にある鉛筆(編集)アイコンをクリックすることでロールの編集画面に入れるため、そこでロールの変更・追加・削除が行なえます。

ユーザーのロールを編集


サービスアカウントを追加・設定する

サービスアカウントはGoogleアカウントと違い、GCPプロジェクトの中で作成するもので、最初から用意されているアカウントもありません。
なのでサービスアカウントが必要な場合は「サービスアカウント」コンソールから新しく作成します。

「サービスアカウント」はナビゲーションメニューの「IAMと管理」の配下にあり、サービスアカウントの作成は「サービスアカウント」コンソール上の「サービスアカウントを作成」から行えます。

「サービスアカウントを作成」に入るまで

「サービスアカウントを作成」を選択すると、まず作成するサービスアカウントの名称を決めるよう求められます。
この時、サービスアカウントの名称は「サービスアカウントID」です。「サービスアカウント名」はGCPの一覧で表される表示上の名前、いわば通称のようなものです。
実際に割り当てたり指定する際に使うのはサービスアカウントIDので注意しましょう。
「作成して続行」を選択すると、設定したサービスアカウントIDでサービスアカウントが作成され、ロールの設定に移ります。

サービスアカウントIDの設定

この時点でサービスアカウントは作成されているため、作成されたサービスアカウントに割り当てる権限をここで設定します。
ユーザーの時と同じように、権限の追加・変更・削除が行えるため、必要な権限を設定しましょう。 その後、サービスアカウントに関連するユーザーアカウントを決めない場合は「完了」を選択すればサービスアカウントの設定が完了となります。
関連するユーザーアカウントを決めるなら「続行」を選択します。

サービスアカウントの権限設定

「続行」を選択した場合、作成したサービスアカウントに関連付けるサービスアカウントユーザーロールとサービスアカウント管理者ロールを設定する画面となります。
ぞれぞれ“ロール”と言われていますが、実態はユーザーアカウント、ひいてはGoogleアカウントです。サービスアカウントユーザーロールとサービスアカウント管理者ロールには1つ以上のGoogleアカウントを設定できます。
サービスアカウントユーザーロールに設定されたGoogleアカウントは、そのサービスアカウントに与えられている権限をそのまま利用できるようになり、サービスアカウント管理者ロールに設定されたGoogleアカウントはそのサービスアカウントの変更や削除といった管理を行なえるようになります。
双方を設定後、「完了」を選択すればサービスアカウントの設定は完了です。

サービスアカウントユーザーロールとサービスアカウント管理者ロールの設定


区切り

ひとつのユーザーアカウントのみがGCPサービスを利用するだけなら前回作成したGoogleアカウントがすべての操作権限を持っていればよいですが、実際に利用するとなればそのような状況になるケースはほぼ無いでしょう。
今回お伝えした新たなユーザーアカウントの追加と権限設定、そしてGCPサービスによって作った仮想マシンやアプリケーションがGCPサービスを利用するために必要なサービスアカウントの追加と権限設定を行なうことで、どのアカウントがどのサービスにアクセスできるかの制御ができます。

さて、概ね必要な要素を揃えられる準備が整ったので、次回からはいよいよGCPで環境を構築するための基本的なリソースの作成方法について触れていきます。

【次回】

bftnagoya.hateblo.jp

【前回】

bftnagoya.hateblo.jp