Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

1 554 vues

Publié le

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

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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/

×