IAM の安全な使用

はじめに

このページでは、Cloud IAM を使用する際に留意いただく必要があるセキュリティに関するおすすめの方法をご紹介します。

このページは Cloud IAM に精通しているユーザーを対象としており、初心者向けに Cloud IAM の使い方を説明するものではありません。Cloud IAM をこれから使い始める方は、最初に Cloud IAM クイックスタートをお読みください。

最小限の権限

セキュリティが重要な意味を持つリソースについては、基本の役割roles/ownerroles/editorroles/viewer など)は使用しないでください。その代わりに、必要最小限のアクセスを許可する事前定義の役割を付与してください。
次のような場合には基本の役割を付与します。
  • Google Cloud サービスで事前定義済みの役割を利用できない場合。使用可能なすべての事前定義済み役割のリストについては、事前定義済みの役割の表をご覧ください。
  • プロジェクトに関する幅広い権限を付与する必要がある場合。この状況は、開発環境またはテスト環境で権限を付与する場合によく生じます。
  • メンバーがきめ細かい権限を必要としない小規模なチームで働いている場合。
アプリケーションの個々のコンポーネントは個別の信頼境界として扱ってください。異なる権限を必要とする複数のサービスがある場合は、サービスごとに個別のサービス アカウントを作成した後で、各サービス アカウントに必要な権限のみを付与します。
子リソースに設定したポリシーで親リソースに付与されたアクセス権を制限することはできない点にご注意ください。各リソースに付与されているポリシーを確認し、階層継承を確実に把握してください。
必要最小限の範囲の役割を付与してください。たとえば、Pub/Sub トピックをパブリッシュするアクセス権だけを必要とするユーザーには、そのトピックのパブリッシャーの役割を付与します。
サービス アカウントとして活動できるユーザーの数を制限します。サービス アカウントに対するサービス アカウント アクターの役割を付与されたユーザーは、そのサービス アカウントがアクセス権を持つすべてのリソースにアクセスできます。したがって、サービス アカウント アクターの役割をユーザーに付与する際は十分な注意が必要です。
プロジェクトのサービス アカウントの作成と管理ができる権限を持つユーザーの数を制限します。
プロジェクト IAM 管理者およびフォルダ IAM 管理者の事前定義済みの役割を付与すると、すべてのリソースを直接読み取り、書き込み、管理するアクセス権を許可することなく、Cloud IAM ポリシーを変更するためのアクセス権を付与できます。

メンバーにオーナーroles/owner)の役割を付与すると、ほぼすべてのリソースにアクセスして変更する権限(Cloud IAM ポリシーの変更を含む)を付与することになります。この権限の範囲の広さには、潜在的な危険も潜んでいます。オーナー(roles/owner)の役割は、(ほとんど)ユニバーサルなアクセス権が必要な場合にのみ付与してくだい。

サービス アカウントとサービス アカウント キー

Cloud IAM Service Account API を使用して、サービス アカウントキーをローテーションします。キーをローテーションするには、新しいキーを作成し、新しいキーを使用するようにアプリケーションを切り替えてから、古いキーを削除します。serviceAccount.keys.create() メソッドと serviceAccount.keys.delete() メソッドを一緒に使用して、ローテーションを自動化します。
プロセスの実装では、ユーザーが管理するサービス アカウント キーを管理します。
暗号化キーとサービス アカウントキーを混同しないように注意してください。一般的に、暗号鍵はデータの暗号化に使用され、サービス アカウント キーは Google Cloud APIs への安全なアクセスのために使用されます。
インスタンスを実行するために使用中のサービス アカウントを削除しないでください。これを削除すると、先に別のサービス アカウントを使用するよう移行していなかった場合に、アプリケーションの全体または一部が失敗することがあります。
サービス アカウントの表示名を使用して、そのアカウントの用途やアカウントに必要な権限を管理できるようにします。
サービス アカウント キーをソースコードに組み込んだり、ダウンロード ディレクトリに置いたままにしたりしないでください。

監査

Cloud Audit Logging ログを使用して、Cloud IAM ポリシーへの変更を定期的に監査します。
Cloud Storage に監査ログをエクスポートして、ログを長期間保存します。
プロジェクトの Cloud IAM ポリシーを変更できるユーザーの管理状況を監査します。
Logging の役割を使用して、ログへのアクセスを制限します。
ログ閲覧者に適用されるのと同じアクセス ポリシーを、ログのエクスポートに使用する Google Cloud リソースに適用します。
Cloud Audit Logs ログを使用して、サービス アカウント キーへのアクセスを定期的に監査します。

ポリシーの管理

組織レベルの Cloud IAM ポリシーを設定して、組織内のすべてのプロジェクトへのアクセス権を付与します。
可能であれば、個々のユーザーではなく Google グループに役割を付与します。ユーザーを追加または削除する場合、Cloud IAM ポリシーを更新するより Google グループのユーザーを追加または削除するほうが簡単です。
特定のタスクの実行を許可するために複数の役割を付与する必要がある場合は、Google グループを作成してそのグループに役割を付与し、そのグループにユーザーを追加します。