Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Firebaseを利用するためにGCPとCloud IAMの 基本を理解しよう

1,919 views

Published on

Firebaseを十全に使うためのGCP/Cloud IAM理解

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Firebaseを利用するためにGCPとCloud IAMの 基本を理解しよう

  1. 1. Firebaseを利用するために GCPと Cloud IAMの 基本を理解しよう 株式会社ドワンゴ 西田和史 (@k_bigwheel)
  2. 2. 発表の目的 Firebaseは GCPに強く依存 Firebaseを使う上で重要な以下を説明 ● GCPのプロジェクト構造 ○ Organization Folder Project ● Cloud IAMとその基本思想 ● GCPと Firebaseの関係 ● Firebaseの IAM管理の注意 2/29
  3. 3. GCPのプロジェクト構造 Organization Folder Project
  4. 4. 個人開発者の場合 の”アカウント”に相当 (個人)Googleアカウント の”IAM user”に相当 4/29
  5. 5. 組織での開発の場合 GCP AWSの”アカウント”に相当 (組織管理)Googleアカウント 5/29
  6. 6. Cloud IAMとその基本思想
  7. 7. Cloud IAMとは ● AWSの IAMに相当 ● どのGoogleアカウントが(Who) どのリソースに(What) 何を実行できるか(How) を管理する ● 単にIAMと表記される場合も 7/29
  8. 8. 例: 山田さんに Cloud Functionの 実行・読み取りを許可したい ● GCPのサービス( , …)の実体はそれぞれアクショ ン(API)の集合 ● 例: Cloud Function は以下 cloudfunctions.functions.call cloudfunctions.functions.create cloudfunctions.functions.delete cloudfunctions.functions.get cloudfunctions.functions.list cloudfunctions.functions.sourceCodeGet cloudfunctions.functions.sourceCodeSet cloudfunctions.functions.update cloudfunctions.locations.list cloudfunctions.operations.get cloudfunctions.operations.list DELETE https://cloudfunctions.googleapis.com/v1/{name} 8/29
  9. 9. 山田さんはGCP上ではGoogleアカウント Googleアカウント(yamada@dωango.co.jp)に 以下を許可 ⭕ cloudfunctions.functions.call ❌ cloudfunctions.functions.create ❌ cloudfunctions.functions.delete ⭕ cloudfunctions.functions.get ⭕ cloudfunctions.functions.list ❌ cloudfunctions.functions.sourceCodeGet ❌ cloudfunctions.functions.sourceCodeSet ❌ cloudfunctions.functions.update ⭕ cloudfunctions.locations.list ⭕ cloudfunctions.operations.get ⭕ cloudfunctions.operations.list Cloud Functionサービスの 実行・読み取りが許可された! 例: 山田さんに Cloud Functionの 実行・読み取りを許可したい 9/29
  10. 10. Cloud Function 例: 山田さんに Cloud Functionの 実行・読み取りを許可したい 10/29
  11. 11. 山田さんに CFを許可 Cloud Function 例: 山田さんに Cloud Functionの 実行・読み取りを許可したい 11/29
  12. 12. Cloud Function 山田さんに CFを許可 例: 山田さんに Cloud Functionの 実行・読み取りを許可したい 12/29
  13. 13. Cloud Function 山田さんに CFを許可 例: 山田さんに Cloud Functionの 実行・読み取りを許可したい 13/29
  14. 14. Cloud Function 山田さんに CFを許可 例: 山田さんに Cloud Functionの 実行・読み取りを許可したい 14/29
  15. 15. まとめると Googleアカウントを指定す ることで誰に許可するかを、 どのレベルで設定するかが 許可リソースの範囲を、 どのAPIを許可するかが 実行できるアクションを、 それぞれ定義する ⭕ cloudfunctions.functions.call ❌ cloudfunctions.functions.create ❌ cloudfunctions.functions.delete ⭕ cloudfunctions.functions.get ⭕ cloudfunctions.functions.list ❌ cloudfunctions.functions.update Who Where What 15/29
  16. 16. 役割(Role) ⭕ cloudfunctions.functions.call ❌ cloudfunctions.functions.create ❌ cloudfunctions.functions.delete ⭕ cloudfunctions.functions.get ⭕ cloudfunctions.functions.list ❌ cloudfunctions.functions.update APIを アタッチ yamada@dωango.co.jp tanaka@dωango.co.jp sato@dωango.co.jp kaneda@dωango.co.jp … ⭕ cloudfunctions.functions.call ❌ cloudfunctions.functions.create ❌ cloudfunctions.functions.delete ⭕ cloudfunctions.functions.get ⭕ cloudfunctions.functions.list ❌ cloudfunctions.functions.update 役割化 役 割:cloudfunction.view er yamada@dωango.co.jp tanaka@dωango.co.jp … 役割を アタッチ 16/29
  17. 17. 定義済みの役割 と カスタムの役割 利便性のため、多数の役割がデフォルトで存在 ● viewer - 対象に対するread only権限 ● editor - 対象に対するread/write権限 ● owner - 対象に対するadmin権限 カスタムの役割は組織内での役職および権限のプリセットと して使うと便利 ● 例: ○ 支払い責任者 ○ GCP運用責任者 ○ 開発リーダー ○ 一般開発者 17/29
  18. 18. AWSとGCPの対応表 アカウント プロジェクト(project) Organizations 組織(organization) Organizationsのグループ? フォルダ(folder) IAM Cloud IAM IAM user (Google)アカウント IAM policy 役割(role) (IAM)アクション アクション(API) 18/29
  19. 19. GCPと Firebaseの関係
  20. 20. Firebaseは3年前にGoogleが買収したサービス と の統合性が非常に悪い 未だにほぼ別のサービスでURLもUIも異なる https://console.firebase.google.comhttps://console.cloud.google.com 20/29
  21. 21. プロジェクトは プロジェクト内のリソース のようなもの プロジェクトの作り方 1. プロジェクトを作成 2. サイト(https://console.firebase.google.com)へ飛ぶ 3. 紐付ける プロジェクトを指定して プロジェクトを作成 21/29
  22. 22. と の関係についてのFAQ ● Firebaseが利用するリソースはGCP上で見える? ○ 原則見えない。背後でどういったリソースを使っている かは不可視かつ変更不可能 ● ではなぜFirebaseはGCPプロジェクトと紐付けるの? ○ FirebaseのIAMおよび支払い情報はGCP側を参照している (独自で管理していない) 22/29
  23. 23. Firebaseの IAM管理の注意
  24. 24. 例: 山田くんにFirebaseへのR/W権限を付与したい Firebase プロジェクト GCP プロジェクト 山田くん やり たい 24/29
  25. 25. Firebase プロジェクト 山田くん GCP プロジェクト やり たい 役割を 付与 組み込みEditor役割 (プロジェクトの全リソー スに対するR/W権限) 例: 山田くんにFirebaseへのR/W権限を付与したい 25/29
  26. 26. Firebase プロジェクト 山田くん GCP プロジェクト 有効化! 役割を 付与 組み込みEditor役割 (プロジェクトの全リソー スに対するR/W権限) 例: 山田くんにFirebaseへのR/W権限を付与したい 26/29
  27. 27. Firebase プロジェクト GCP プロジェクト 有効化! 役割を 付与 組み込みEditor役割 ( プロジェクトの全リ ソースに対するR/W権限) 問題点 1. 内での細かい権限管理は一切できない (プロジェクト単位でのR/RW/Adminのみ) 2. プロジェクトでAdmin = プロジェクトでもAdmin 27/29
  28. 28. 蛇足: Firebaseが Cloud IAMと完全に統合されているなら 以下が提供さているのが妥当 ● Firebaseというリソース ● Firebaseサービス用のREST API しかし、両方共2017/11/05時点で存在しない Firebase Service ? 28/29
  29. 29. 質問あればどうぞ
  30. 30. スライド中の利用素材 ● いらすとや ○ http://www.irasutoya.com/ ● AWS公式アイコン ○ https://aws.amazon.com/jp/architecture/icons/ ● GCP公式アイコン ○ https://cloud.google.com/icons/ ● マテリアルアイコン ○ https://material.io/icons/

×