‼️

firebaseコンソールから秘密鍵の生成ができなくなっていた問題の解決

2025/01/18に公開

現象

原因

2024 年 5 月 3 日以降に作成された組織は自動的なロール付与が無効になっているためでした。

https://cloud.google.com/resource-manager/docs/organization-policy/restricting-service-accounts?hl=ja から引用

解決策

以下のコマンドの出力から組織idをメモ

gcloud organizations list

オーナー権限がある場合、以下のコマンドを使って自分に Org Policy Admin ロールを付与できます。

gcloud organizations add-iam-policy-binding [組織id] \
  --member="user:[オーナーのアカウント]" \
  --role="roles/orgpolicy.policyAdmin"

ロールが付与されたかを確認するには、次のコマンドを実行します。

gcloud organizations get-iam-policy [組織id] \
  --format="table(bindings.role, bindings.members)" \
  --filter="bindings.members:user:[オーナーのアカウント]"

結果が以下のように表示されれば、Org Policy Admin が付与されています。

ROLE                              MEMBER
roles/orgpolicy.policyAdmin       user:[オーナーのアカウント]

現在の「Disable service account key creation」ポリシーの状態を確認

gcloud org-policies describe constraints/iam.disableServiceAccountKeyCreation \
  --organization=[組織id]

結果の例

name: organizations/123456789012/policies/constraints/iam.disableServiceAccountKeyCreation
spec:
  rules:
  - enforce: true

enforce: true となっている場合、このポリシーが有効になっています。

ポリシーを無効化(OFFに設定)

gcloud org-policies reset constraints/iam.disableServiceAccountKeyCreation \
  --organization=[組織id]

変更を確認 ポリシーが無効化されたかを再度確認します。

gcloud org-policies describe constraints/iam.disableServiceAccountKeyCreation \
  --organization=[組織id]

期待される結果: ポリシーがリセットされており、rules セクションが消えるか、enforce が無効になっています。

改めてfirebaseコンソールから秘密鍵の生成を試すと、エラーなくダウンロードできます。

注意事項

セキュリティリスク:
サービスアカウントのキー作成を許可すると、キーが漏洩した場合に大きなリスクが発生します。必要な変更を行った後は、ポリシーを再び有効化することを検討してください。

元に戻す(ポリシーを再有効化)

gcloud org-policies enable constraints/iam.disableServiceAccountKeyCreation \
  --organization=[組織id]

ポリシーが有効化されたかを確認します。

gcloud org-policies describe constraints/iam.disableServiceAccountKeyCreation \
  --organization=[組織id]

Discussion