0

開発環境で使用するサービスアカウントを作成しました。その資格情報がソース管理にチェックインされているため、最低限。サービスアカウントでPubSubのサブスクリプションを作成することはできますが、それらから読み取ることはできません

新しいホストをスピンアップすると、私たちのアプリは新しいPubSubサブスクリプションを作成し、新しく作成されたサブスクリプションをリッスンし、完了したらそれを削除します。可能な場合は、ホスト固有の設定(ホストサブスクリプションマップの形式)は望ましくないため、ホストの数が増減するため、このモデルではあらかじめ設定された/ハードコードされたサブスクリプションの数を超えて選択しました。私たちはローカル開発環境でもデバッグに理想的なこの同じ動作をしたいと考えています。

特定の開発用トピックを作成し、開発サービスアカウントにPub/Sub Adminロールを付与して、そのトピックにサブスクリプションを添付できるようにしました。私はまた、サービスアカウントにサブスクリプションを作成できるプロジェクトレベルの権限を与えました。サービスアカウントは新しいサブスクリプションを正常に作成してトピックにアタッチできますが、新しいサブスクリプションからの読み取りを試みると、アクセス権拒否エラーが表示されます。

これは、新しく作成されたサブスクリプションをチェックすると、そのサブスクリプションに任意の種類のアクセス許可が与えられていないことがわかりました。私はサブスクリプションを作成したアカウントが少なくともそれに読み取り権限を持っていることを期待していました。

サービスアカウントが他のサブスクリプションやトピックにアクセスできないうちに、サブスクリプションを作成してトピックに添付してからそのサブスクリプションを読み取る方法はありますか?私は、サービスアカウントにすべてのサブスクリプションを読むためのアクセス権を「より高いレベル」のロールにすることはできますが、それは開発専用のアカウントを持つという目的を破ることです。

答えて

0

サービスアカウントがサブスクリプションを作成した後、サブスクリプションでsetIamPolicyを呼び出して、サブスクリプションへの読み取りアクセスを許可することができます。これは、プロジェクトのすべてのサブスクリプションでsetIamPolicyを呼び出す機能を含む、プロジェクトのpubsub管理役割をサービスアカウントに付与したためです。

https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions/setIamPolicy

+0

これは開発サービスのアカウントなので、私はプロジェクト内の*は任意の*サブスクリプションにSetIamPolicy()を呼び出すことができるようにしたくない、と開発の専用トピックに添付のみのもの私はそれに許可を与えた。 プロジェクトアカウント以外の広範囲で新しく作成されたサブスクリプションを読み取るためのサービスアカウント権限を与える方法はありますか?パーミッションがトピックごとではなくプロジェクトごとにしかない場合、新しいプロジェクトを作成する以外は、テストアカウント(プロダクショントピック/サブスクリプションアクセスなし)を使用する方法はありません... – Brentonium

+0

ああ、お詫び申し上げます。私は誤解しました。私はIAMポリシーの目的のためにトピックやサブスクリプションをグループ化する方法を知らないので、作成時にサブスクリプションにIAMポリシーを指定することはできないようです。理想的ではありませんが、サブスクリプションを保持するためだけに新しいプロジェクトを作成することができます。 –

関連する問題