Open11

GCPキャッチアップメモ

ToshikiToshiki

つらつらと書いていく。まとまりはないので本当に自分用メモです

ToshikiToshiki

サービスアカウントとは?

サービス アカウントは、ユーザーではなく、アプリケーションや Compute Engine インスタンスなどのコンピューティング ワークロードで通常使用される特別なアカウントです。

サービス アカウントは人間以外のユーザーを表します。これは、カスタム アプリケーションなどのワークロードで、エンドユーザーの関与なしにリソースにアクセスする場合や、アクションを実行する必要がある場合を対象としています。

https://cloud.google.com/iam/docs/service-account-overview?hl=ja

サービスアカウントはプリンシパルであり、リソースでもある
なる、、ほど??わからない

ToshikiToshiki

サービスアカウントは、権限を与えられて実行役となり(プリンシパル)、同時にその実行役を誰が使えるかという管理対象にもなっている(リソース)、という非常に重要な存在です。

1、サービスアカウントを作成
2、「Cloud Storageの管理者」のロールをサービスアカウントに付与
3、サービスアカウントをCumpute Engineに割り当て
4、結果、Compute EngineからCloudStorageへアクセス(CRUD)可能な状態を実現できる

------ ↑これが実行役(プリンシパル)としてのサービスアカウント ------

------ ↓これが管理対象(リソース)としてのサービスアカウント ------
1、PMは今月参画した開発者Aさんに、サービスアカウントの操作権限をあげたいと思った
2、PMは開発者Aさんに対して、「サービスアカウント ユーザー」のロールを付与する
3、結果、開発者Aさんは「Compute Engineに、CloudStorageへのアクセス可能なサービスアカウントを割り当てる」操作ができる状態になった

AWSのAIMロールと近しい感じ

ToshikiToshiki

昨日GCP API Gatewayをコンソールからポチポチ作ってみた、openapi.ymlをアップロードしたがゲートウェイ作成で、不明なエラー。なぜ?
x-google-backendの指定が漏れていたかも

で、今朝見た記事

GCPのAPI Gatewayは、APIの定義を記載したOpenAPIドキュメント(v2.0)を渡すことで、設定できます。
しかし使ったことがある人なら分かると思うのですが、めちゃくちゃエラーが出ます。通常のviewerで問題なく表示できるドキュメントを使っても大量のエラーを吐くことがよくあります。しかも、何故か今どきv2しか受け付けません。v3で書くともちろんエラーを吐きます。
APIを修正してプルリク出してレビューしてマージして適用しようとすると、適用失敗してエラーになり作り直しになることが容易に想像ができます。これはツライです。

https://zenn.dev/ncdc/articles/1cb8151cfdfb3c

ハマりやすい様子、、

ToshikiToshiki

IAMロール3種類
基本ロール
事前定義ロール
カスタムロール

基本ロールには3種類
オーナー プロジェクトの全権限をもつ。IAM管理も可能
編集者 リソースの管理が可能、IAMの管理はできない
閲覧者 リソースの閲覧のみ。変更や作成は不可

ToshikiToshiki

認証はFirebase Authにする
内部的にはIdentity Platformを使っているらしい
認証トークンは1時間で切れるとのこと
でもfirebase SDK経由で取得すれば自動でリフレッシュしてくれる

ToshikiToshiki

後からFastAPIでCloudRunにデプロイ予定
今はfunctions frameworkでCloud functionsの開発をする土台をつくる

横文字ばっかりや

ToshikiToshiki

Cloudfunctionsの前段にAPI Gatewayを置く意味

アクセス制御をAPI Gatewayに分離しfunction側ではビジネスロジックに集中
・認証をまとめることができる
・ログの集中管理→どのパスにどのくらいアクセスがあったか調べることができる
・エンドポイントをドメインで統一できる
・レートリミットなどのカスタマイズをGateway側で集中管理
・CloudRunに移行するとき向き先を変えるだけで済む

おお、メリット多い

ToshikiToshiki

CloudfunctionsではなくCloudRunに変更

FastAPIをCloudRunにデプロイ
APIGateway経由でアクセス
APIGatewayにFirebaseAuth認証つけてアクセス
CloudRunからFiiestoreへusers一覧取得をする