元営業WEBエンジニアのアプリ開発日記

営業出身のWEB系エンジニアが気になったものから作ってはメモを残してくブログ

ほぼ無料でGCPのフォルダリソースにIAMポリシーを紐付ける

概要

AWSやるぞって資格までとったけど、最近は仕事も変わりもっぱらGCPさわってます
GCPの権限(IAM)周りの勉強も踏まえて自分で色々設定してみる! こんな感じの物を作るのだ! f:id:shintaro-0112:20191116153154p:plain

ほぼ無料でと書きましたが独自ドメイン(数円〜数十円)の料金がかかります

Cloud Identityの設定

フォルダ使うためには組織が必要
組織使うためにはGSuiteかCloud Identityが必要

GSuiteは最低でも1ユーザー/月680円するけど Cloud Identityは無料。無料!!こっち使おう

GCPコンソールにて「IAMと管理」->「IDと組織」->「お申し込み」を押下して ぽちぽちと適当にアカウント情報を入れていく f:id:shintaro-0112:20191116153355p:plain

ドメインの所有権の確認

途中で「ドメインの所有権の確認」というステップがある ドメインが自分のものであることを証明する必要がある

独自ドメイン購入

とりあえずお名前.comで適当にドメインを買う
(今回関係ないけどWhois代行設定は初回購入時無料なので設定が吉)

無料サーバーの準備

今回は「ドメインの所有権の確認」の方法としてhtmlのmetaタグを用いた認証を行う。そのために、自身のドメインにhttpでアクセスできる環境が必要になる。

無料で独自ドメイン対応したwebサーバー構築調べたら XFREEなるサーバーが使えそうだったのでこれで行く。無料プランを申し込み。

独自ドメインの向き先を自身のサーバーに向ける

「お名前.com」のネームサーバーでAレコードを設定して 購入したドメインの向き先ipを無料で購入したサーバーに設定する必要がある。

まずはXFREE管理パネルのドメイン設定追加画面に行き
「Aレコード認証」のコンテンツIPをコピーする。 f:id:shintaro-0112:20191116154003p:plain

コピーしたIPアドレスを、お名前.comのDNS設定でAレコードとして設定する。 f:id:shintaro-0112:20191116155715p:plain

以下コマンドのexample.comを自身のドメインに変更して実行
設定したIPアドレスが表示されればOK!

dig a example.com +short

DNS設定が反映されるまでにそこそこ時間がかかるかも)
(お名前.comのNAMEサーバーが0x.dnsv.jpになっていることも要確認。
違うサービスのNAMEサーバー使ってる場合はそちらでAレコード設定しなきゃ)

上記反映された状態でXFREEの管理パネルのドメイン追加画面に行き 「ドメイン設定を追加する(確認)」ボタンを押下すると購入したドメイン追加される。

ドメイン所有権確認

XFREE管理パネルでwebFTPボタンを探してindex.htmlをブラウザで編集。
Cloud Identity設定画面で表示されたmetaタグをコピーして保存

f:id:shintaro-0112:20191116154815p:plain

Cloud Identity設定画面に戻ると認証成功するはず!

GCPフォルダを作成

組織->フォルダ->プロジェクトを作成

# 組織ID確認
gcloud organizations list

# 組織IDを指定してフォルダ作成
gcloud alpha resource-manager folders create --display-name=[folder_name] --organization=[organization_id]

# フォルダID確認
gcloud alpha resource-manager folders list --organization=[organization_id]

# フォルダID指定してプロジェクト作成
gcloud projects create --folder=1048782978666 [project_name]

IAMポリシーをフォルダーに紐付け

個別アカウントではなく、エンジニアとかマーケターとかざっくりした区分けをGoogle Groupで作成して、それに役割を与える。 あとはそれに当てはまる個別アカウントを対象グループに入れるようにしたい。

検証のために、Cloud Identityで適当なアカウント「aaa.bbb@example.com」を作成してGCPコンソールにログインする。 なんの役割も与えてないのでGCEの画面とか行くと権限エラーになる f:id:shintaro-0112:20191116155528p:plain

Google Groupの作成

Google Groupを作成。
作成した適当なアカウントを作成したグループに追加。

Google Groupに対して役割を付与し、フォルダーにIAMポリシーを紐付け

# 作成したGoogle Groupにフォルダーレベルのowner役割を付与
# 例)[google_group_email]:engineer@example.com
gcloud resource-manager folders add-iam-policy-binding [folder_id] --member group:[google_group_email] --role roles/owner

# フォルダリソースに紐づくIAMポリシーの確認
gcloud resource-manager folders get-iam-policy [folder_id]

再度適当なアカウントでGCPコンソールを見るとプロジェクトにアクセスできるようになってる!! f:id:shintaro-0112:20191116155149p:plain

所感

フォルダを使った運用イメージがつかなかったので自分で実際に手を動かしてみた。
フォルダを適切に区切れば、IAMポリシーの設計も素敵にできそうな空気がした