GCP の使い方 (1) IAM を使ってみよう|研修コースに参加してみた
今回参加したコースは GCP の使い方 (1) IAM を使ってみよう です。 このコースは GCP の数あるサービスの中でも基幹になるサービスを紹介するもので、前編の (1) で IAM 、後編の (2) では Cloud Pub/Sub を扱います。
主要なクラウドサービスで基幹となるのが IAM (Identify and Access Management) です。 言わずもがな、クラウドサービスを使うアカウントと権限を管理するものですね。 どれぐらい基幹かというと、 Google Trends で見てみると、クラウドの一番代表的なサービス、仮想マシンや仮想ストレージと同じぐらい検索されています。
そんなクラウドの基幹だけにクラウドサービスを運用する方には必須なのですが、これがクラウドサービスによってまったく考え方も操作も違います。 Oracle や PostgreSQL 、 MySQL など各 RDBMS の操作以上に異なります。 プログラミング言語ごとの Hello, World!! を出すプログラムぐらい違う(違わないか … )。
このコースでは GCP における IAM の考え方の違いや、操作の違いがとてもわかるものでした!
では、どのような内容だったのか、レポートします!
コース情報
想定している受講者 | GCP 入門を受講していること |
---|---|
受講目標 |
|
講師紹介
このコースではネットワークの分野での登壇が多く、この “参加してみた” レポートでもおなじみの Gene さんです。 いつものネットワークとは少しだけ異なり、クラウド分野でも登壇されました。
「ネットワーク技術をわかりやすく解説する」ことを目標にフリーのインストラクタ、テクニカルライターとして活動中。
2000 年よりメールマガジン、 Web サイト「ネットワークのおべんきょしませんか?」を開設。 2003 年には CCIE Routing & Switching を取得し、 2003 年 8 月に独立。
コースの冒頭、 Gene さんはクラウドサービスの中でも GCP が好きとのことで、 GCP のスキルバッジも取得済みとのことでした。 以下のリンクをご覧になるとわかりますが、伊達に好きと言ってないぐらいバッジを持ってらっしゃいます!
それにしても、この Google Cloud Skills Boost の仕組みは面白いですね! コースと呼ばれるインプットを経て、クエストと呼ばれるハンズオンのアウトプットで資格 = スキルバッジがもらえるというものでした。
GCP IAM の考え方と概要
個人が使っているなら権限について考えなくてもすみますが、会社などチームで使うときには、誰にどんな権限(パーミッション)を割り当てるかをきちんと管理しなければいけません。そのような場合に IAM を使います。
-
GCP IAM(IAM) とは
- GCP リソースのアクセス制御を一元管理するための仕組み
- どのユーザがどの GCP リソースを作成 / 変更 / 利用できるか
- プロジェクト単位で行う
- IAM でアカウントを作成して権限を割り当て
AWS にも IAM がありますが、 AWS がリソースごとに権限を割り当てるのに対して、 GCP はプロジェクト単位と、ちょっと違いますね。
GCP IAM は次の要素からなります。 クラウドサービスによって呼称が異なり、画面を見たときに何かさっぱりわからなくなりますので、注意です。
- プリンシパル
- リソースにアクセスする主体
- 一意の識別子(メールアドレス)で識別する
- ロール
- 権限の集合
- どのリースに対してどんなアクションができるか(作成 / 変更 / 利用)をまとめたもの
- ポリシー(許可ポリシー)
- プリンシパルをどのロールに紐づけるか
プリンシパルという言葉が聞き慣れないと思っていたところ、これはセキュリティでよく使われる用語(セキュリティ プリンシパル)から来ているのでした。
では、プリンシパルと権限、ロールを詳しく見てみましょう。
- プリンシパル
- Google アカウント
- メールアドレスで識別
- サービスアカウント
- GCP のリソース。 Compute Engine やストレージなど
- 認証済みのすべてのユーザ
- Google アカウントおよびサービスアカウントで認証されたすべてのユーザ
- すべてのユーザ
- 認証されたユーザと認証されていないすべてのユーザ
- Google アカウント
- 権限( permission )
- リソースに対して許可される操作
- 表記フォーマット
<サービス(service)>.<リソース(resource)>.<動詞(verb)>
- ex.
compute.instances.create
( compute Engine の Instance を作成できる)
- ロール
- 権限の集合がロール
- 権限を一つずつに割り当てるのはとても面倒
- ロールを定義して割り当て
- 3 種類ある
- 基本ロール( basic role )
- プロジェクト単位の大まかなアクセス制御
- Viewer / Editor / Owner の 3 通り
- 権限を割り当てすぎてしまっている -> 基本ロールの利用はなるべく避ける
- プロジェクト単位の大まかなアクセス制御
- 事前定義ロール
- 細かいアクセス制御を実現できる、予め定義されているロール
- だいたいの場合は、事前定義されているロールから選べば大丈夫
- カスタムロール
- 事前定義ロールでは不要な権限がついてしまっているときなどに作成する
- 基本ロール( basic role )
- 権限の集合がロール
GCP の IAM が AWS の IAM とは異なる概念がサービスアカウントです。 サービスアカウントは GAS (Google Apps Script) でもよく登場するテクニックで、普通のユーザだけでなく、 GCP のリソースもユーザと同じ形でプリンシパルとして権限を管理します。
GCP IAM の操作
では、実際に GCP IAM を操作します。 コースでは、操作説明のあと Gene さんに操作のデモを行っていただきました。
このレポートでは大まかな操作手順を紹介します。
- プリンシパルの新規作成とロール割当
- Web コンソール メニュー > 「 IAM と管理」
- 「アクセス権を付与」
- 「新しいプリンシパル」:ユーザアカウントやサービスアカウントを選択
- 「ロールを選択」:プリンシパルに紐づけるロールを指定
- サービスアカウントの新規作成とロール割当
- サービスアカウント ID はメールアドレス形式
- @ の前がサービスアカウント名
- @ の後の最初の部分がプロジェクト ID
- ロールの割当(作成時、または上記の「アクセス権を付与」から)
- サービスアカウント ID はメールアドレス形式
- 仮想マシンにサービスアカウントを指定(一例)
デモはプロジェクト作成から始まり、以下のように実施されました。
- VM (仮想マシン)を立て Python の BigQuery にクエリを発行するプログラムをデプロイ
- VM に BigQuery に対してクエリを発行できるサービスアカウントを割り当て
- 実際に実行
デモを見ていると、さきほど学んだ、プリンシパルやサービスアカウント、ロール、権限などの考え方を理解していないと混乱してしまいそうでした。
gcloud コマンドでも実行
先ほどは GUI で操作しましたが、 gcloud CLI を使ってコマンドでもやってみました。
- プリンシパルへのロールの割り当て
$ gcloud projects add-iam-policy-binding <PROJECT_ID> \ --member="user:<email-address>" \ --role="<ROLE_NAME>"
- サービスアカウントの作成
$ gcloud iam service-accounts create <SA_NAME> \ --description="<DESCRIPTION>" \ --display-name="<DISPLAY_NAME>"
- サービスアカウントへのロールの割り当て
$ gcloud projects add-iam-policy-binding <PROJECT_ID> \ --member="serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \ --role="<ROLE_NAME>"
- 仮想マシンへのサービスアカウントの割り当て
$ gcloud compute instances create <INSTANCE_NAMES> \ --service-account=<SERVICE_ACCOUNT>
実際にコマンドを叩いてはいませんが、 AWS が create-policy
をしてから attach-user-policy
するのとは、考え方が違うことがよくわかります。
この gcloud を使ったところで、 GCP IAM のパートは修了しました。
まとめ
GCP でよく使うサービスとして、まずは前編で GCP IAM の概要と操作を確認しました。
IAM そのものはクラウドサービスすべての基幹になるものなので、 GCP や AWS 、 Azure など主要なサービスには必ずあるものです。 ただし、各サービスごとに考え方や呼称などに加え、もちろん操作方法もまったく違います。 そのうち、それぞれをラップする共通基盤の CLI も出来るのでは … ?
さておき、今回は GCP IAM を見てみましたが、プリンシパルなど用語をおさえて、特に CLI での操作をみると、 GCP の特徴が何か、よくわかりました。 エンタープライズでクラウドを使うなら、絶対に必要となるものだけに、違いがわかるのはとてもメリットでした。 GCP をはじめて使う方にはオススメです!
後編ではこれも何かと重宝する Cloud Pub/Sub を紹介します。 あわせて、ぜひご覧ください!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額 28,000 円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。