LoginSignup
0
0

More than 3 years have passed since last update.

【ACE】IAMのアクセスとセキュリティの構成

Last updated at Posted at 2020-03-23

こんにちは

このガイドにはグーグルさんが提供しているCloud IAMの概要上で省略して簡単にIAMのことが分かる為提供いたします。
詳細はここです。
では、主な基本知識を説明いたします。

Identity and Access Management(IAM)を管理します

Cloud IAMは各リソースに対するアクセス制御を行うためのサービスです。
Cloud IAM では、誰(ID)がどのリソースに対してどのようなアクセス権(役割)を持つのかを定義することにより、アクセス制御を管理します。
次の図に、Cloud IAM で権限を管理する仕組みを示します。
image.png
誰(ID): Members
アクセス権(役割): Roles
1つ以上のMembersを1つのRolesにバインド: Policy

ではIAMを使ってみよう~
―対象プロジェクト名:ACE-le-202004

IAM 役割の割り当てを表示します

Cloud Console で IAM ページを開きます
image.png
[追加] をクリックします。
image.png

IAM 役割をアカウントまたは Googleグループに割り当ています

[New members]
Cloud IAM では、メンバーに対してアクセス権を付与します。メンバーには次のタイプがあります。
― Google アカウント
― サービス アカウント
― Google グループ
― G Suite ドメイン
― Cloud Identity ドメイン
image.png

今回の作成するPolicyは、
―Memberタイプ:Googleアカウントemail
―Roles: Storage Object Creator
:point_right: Roles一覧はリンクをご参考下さい
image.png
結果は、
image.png
では共有された者からストレージへアクセスしてみよう
次の図にアクセスが出来ない理由はstorage.buckets.listの権限がありません。
image.png
とりあえず、先ほど作成したPolicyを調整します。RolesはStorage Adminへ変更します。
image.png
Storage Admin権限でStorageリソースを利用できるようになっています。
image.png
以上にStorage Adminの権限をhuong_le@xxxxxx-s.co.jpメンバーへ提供しました。
このRolesでいくつことができますか。Rolesページで確認できます。

Filter tableのところにStorage Adminを入力します。
image.png
Storage Adminを選らんでStorage Adminが提供する権限が表します。
image.png

カスタム IAM 役割を定義します

以上の続きですが、huong_le@xxxxxx-s.co.jpメンバーにバケットの削除権限を提供したい場合、カスタムIAMを作成しないとね~
Roles/Storage Adminページ上にあるCreate From Roleボタンを選択します。
image.png
カスタムしましょ
―Title:Custom Storage Admin
―Descipttion:Created on: 2020-03-19 Based on: Storage Admin
―ID:CustomStorageAdmin
―Role launch stage: Alpha
storage.buckets.deleteコレクションのチェックを外します

又は、このメンバーにCloud SQL Viewer権限を提供したい場合、
Add permissionsボタンを選択してCloud SQL Viewerののコレクションを選択します。
image.png

結果は、
image.png

Custom Storage Admin Roleが作成されました。
image.png
このRoleをhuong_le@xxxxxx-s.co.jpメンバーに提供します。
IAMページへ戻って先ほど作成したPolicyを編集します
image.png

では、huong_le@xxxxxx-s.co.jpメンバーがバッケトを削除してみよう~
image.png
出来ないでしょね!
そして、SQLの状況が見えますか
image.png
見えますよね~
:footprints:
五つメンバータイプにはサービスアカウントは他のメンバーとは違います。。。
サービスアカウントって何だろう?

サービス アカウントを管理します

Cloud IAMのサービスアカウントページにサービスアカウントを管理します。
サービス アカウントは、ユーザーではなく、アプリケーションや仮想マシン(VM)インスタンスで使用される特別なアカウントです。
アプリケーションからGCP上のリソースにアクセスする際はサービスアカウントによる認証処理が必要となります。
サービスアカウントを使用して、承認された API 呼び出しを行います。
:writing_hand: GCPプロジェクト作成する時、Compute EngineサービスアカウントとApp Engineサービスアカウントが自動的に作成されます。
:point_right: GCE、GKEおよびGAEのそれぞれの環境で稼働するアプリケーションから各類リソースへアクセスができます。
その他の環境で稼働するアプリケーションならば専用のサービスアカウントを追加しないといけない。(最大100個です

実際にサービスアカウントを作成してみよう~

制限された特権によってサービスアカウントを管理します

Create service accountボタンを選択しサービスアカウントを作成します。
Service account ID:dsk-le
Service account description: Create at 2020/03/19 18:18
image.png
ここまでは、dsk-le@ace-le-202004.iam.gserviceaccount.comアカウントが作成されました。
image.png

次はこのサービスアカウントによる役割を設定します。
Role:Cloud sql admin
image.png

サービスアカウントをアクセスできるメンバーを設定します。
Service account users role:[Google account email]
image.png
サービスアカウントキーを作成します
image.png

今回は、JSON形式を選びます。
image.png

JSONファイル
image.png

:ok_hand: サービスアカウントが既に作成されました。
image.png

サービスアカウントをVMインスタンスに割り当ています

以前に言いました、

"GCPプロジェクト作成する時、Compute EngineサービスアカウントとApp Engineサービスアカウントが自動的に作成されます。"

ということは、VMを作成すればCompute EngineサービスアカウントはDefaultが設定されます。
Compute Engineページを開いてVMを作成してましょ

Service accountはdefaultで設定します

VMをCreateするボタンをクリックして以下の情報を設定します。

Name vm-custom-service
Region us-central1
Zone us-centra1-c
Machine type f1-micro
Service account 設定なし

image.png
【Create】ボタンをクリックして vm-custom-service が作成されます。
このVMをクリックしてService accountのところにDefaultアクセス権限を確認します。
デフォルトサービスアカウント: 576862306389-compute@developer.gserviceaccount.com
image.png
Storage(Read only)は例としてアクセスしてみます。
ストレージのリソースを準備しておきます。
BUCKET_NAME: Storageのバケット作成はここを参考
OBJECT_NAME: バケットのオブジェクト作成はここに参考
例、
BUCKET_NAME: bucket-from-editer-ace-le-202004
OBJECT_NAME: sample1.txt
image.png

VMのterminalを起動する為、SSHをクリックします。
image.png
次のコメントを実行します
gsutil rm gs://[BUCKET_NAME]/[OBJECT_NAME]
image.png
しかし、次のコメントを実行します
gsutil ls gs://bucket-from-editer-ace-le-202004
image.png
バケットのオブジェクトを削除できませんが、観覧できます。なぜならストレージのアクセスはRead only権限です。

Service accountはカスタムサービスアカウントで設定します

以前に作成したVMはサービスアカウントをデフォルトからカスタムサービスアカウントへ変更します。
順番は、変更する為一旦VMを中止します。VMを修正ボタンクリックして修正した後に再起動します。

VMを中止
image.png
サービスアカウント変更
以前に作成したdsk-leサービスアカウントを選びます。
image.png
VMを再起動してSHHを開きます。以前の実行したコメントはもう一度実行します。
gsutil rm gs://[BUCKET_NAME]/[OBJECT_NAME]

image.png
何故ならbucket-from-editer-ace-le-202004バケットはdsk-le@ace-le-202004.iam.gserviceaccount.comメンバーにアクセス権限を提供することが忘れました:tongue:
image.png
:ok_hand: ストレージへアクセスできると確認します。
gsutil ls gs://[BUCKET_NAME]/[OBJECT_NAME]
image.png
:ok_hand: アクセスできましたよね。次のカスタム権限を確認します
gsutil rm gs://[BUCKET_NAME]/[OBJECT_NAME]
image.png
結果は、sample1.txtファイルが削除されました。
image.png
:writing_hand: サービスアカウントを使ってユーザーアカウントに権限を提供したくても開発するときサービスアカウントキーの情報を設定すれば提供するリソースへアクセスできるという得点です。

別のプロジェクトのサービスアカウントにアクセス権を付与します

Google Cloud Platform Console 内で、プロジェクトリストからプロジェクトAを選択します。
プロジェクトB: dataproc
image.png
[メンバー] ボックスに、プロジェクトAの「サービス アカウントのメールアドレス」を入力します。
[役割] プルダウンを展開し、[Storage Admin] を選択します。
プロジェクトA: ACE-le-202004
image.png
ということはProjectAに作成したサービスアカウントはProjectBで利用できます。
image.png

お疲れ様です

IAMの仕事はちょっとでも分かりましたか^・〜
サービスアカウントキー(JSONファイルなど)の利用方法を説明するつもりがありましたが記事が長かったので別の記事にすると思いますので待ってね〜

また、プロジェクトとマネージドサービスの監査ログも大切だと思いますから、参考してね。

最後まで読んで頂きまして有難うございます( ´ ▽ ` )b

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0