機密性の高いリソースを保護する一つの方法は、リソースに対するアクセスを制限することです。ただし、機密性の高いリソースへのアクセスを制限すると、そのリソースにときどきアクセスする必要があるユーザーに負担がかかります。たとえば、インシデントを解決するために、ブレークグラス(緊急時)で機密性の高いリソースへのアクセスが必要になることもあります。
このような場合は、リソースに一時的にアクセスする権限をユーザーに付与することをおすすめします。また、監査プロセスを効率的に行うため、ユーザーがリソースにアクセスする理由を記録しておくことをおすすめします。
Google Cloud では、このような一時的な昇格されたアクセスを管理する方法がいくつかあります。
Privileged Access Manager
Privileged Access Manager(PAM)を使用すると、特定のプリンシパルのジャストインタイムの一時的な権限昇格を管理し、監査ログを表示して、誰が何にいつアクセスしたかを確認できます。
次の状況では、Privileged Access Manager で一時的な特権昇格を行うことができます。
緊急のアクセス権を付与する: 緊急対応で承認を待たずに重要なタスクを実行できるようにします。緊急のアクセスが必要な理由に関する追加のコンテキストの提示を義務付けることもできます。
機密リソースへのアクセスを制御する: 機密リソースへのアクセスを厳密に制御し、承認とビジネス上の正当な理由を必要とします。このアクセスの使用方法を監査する場合にも Privileged Access Manager を使用できます。たとえば、ユーザーに付与されたロールがいつ有効になったか、その時点でアクセス可能なリソース、アクセスの正当性、承認者などを監査できます。
たとえば、Privileged Access Manager を使用すると、次のことができます。
デベロッパーに本番環境への一時的なアクセス権を付与して、トラブルシューティングやデプロイを行う。
サポート エンジニアに、特定のタスクのために機密性の高い顧客データへのアクセス権を付与します。
データベース管理者に、メンテナンスや構成変更を行うための昇格された権限を付与します。
サービス アカウントのセキュリティを強化する: サービス アカウントにロールを永続的に付与するのではなく、サービス アカウントが自動タスクで必要な場合にのみ、ロールの昇格を受け入れるようにします。
契約社員と外部人材のアクセスを管理する: 契約社員または外部人材にリソースへの一時的なアクセス権を付与します。この場合、承認と正当な理由が必要です。
Privileged Access Manager の設定の詳細については、Privileged Access Manager の概要をご覧ください。
一時的な昇格をリクエストする方法については、一時的に昇格されたアクセス権をリクエストするをご覧ください。
Google グループ
一時的に昇格されたアクセス権を管理する一つの方法は、Google グループに機密リソースへのアクセス権を付与し、そのグループにユーザーを追加および削除してアクセス権を制御することです。
一時的に昇格されたアクセス権用に Google グループを設定するには、まず、グループを作成してから、ユーザーに一時的に許可するロールを付与します。拒否ポリシーを使用する場合は、予期しない拒否を回避するため、グループを関連する拒否ルールから除外することを検討してください。
グループを設定したら、ユーザーを追加または削除して、ユーザーのアクセス権を変更できます。Google Groups API を使用している場合は、メンバーシップの有効期限を使用することで、ユーザーを一時的にグループに追加できます。
ユーザーが機密性の高いリソースにアクセスする理由を記録する場合は、独自の運用プロセスとツールを定義する必要があります。
たとえば、Compute Engine リソースへの緊急アクセスを管理するには、emergency-compute-access@example.com
グループを作成して、Compute 管理者のロール(roles/compute.admin
)を付与します。コンピューティング リソースに対して緊急な管理者権限が必要なユーザーは、emergency-compute-access@example.com
グループに追加できます。緊急事態が解決したら、そのユーザーをグループから削除します。
IAM Conditions
IAM Conditions を使用すると、期限切れの近いユーザーに Google Cloud リソースへのアクセス権を付与できます。詳細については、一時的なアクセスを構成するをご覧ください。
ユーザーが機密性の高いリソースにアクセスする理由を記録する場合は、独自の運用プロセスとツールを定義する必要があります。
期限切れのロール バインディングは、許可ポリシーから自動的に削除されません。許可ポリシーの最大サイズを超えないようにするため、期限切れのロール バインディングを定期的に削除することをおすすめします。
拒否ポリシーは時間ベースの条件をサポートしていません。そのため、拒否ポリシーの条件を使用して、ユーザーを一拒否ルールから時的に除外することはできません。
ジャストインタイム特権アクセス
ジャストインタイム アクセスはオープンソースのアプリケーションです。IAM Conditions を使用して、Google Cloud リソースに対するジャストインタイム特権アクセスをユーザーに付与します。このアプリケーションは、App Engine または Cloud Run で動作するように設計されています。
条件付きロール バインディングを手動で追加する場合と比べて、このアプリケーションには次のような利点があります。
- ジャストインタイム アクセスで有効にできるロールを検索できます。
- アクセス権を取得する前に、理由を示す必要があります。
- このアプリケーションでは、新しいバインディングを作成する代わりに、既存の条件付きバインディングを置き換えるため、IAM 許可ポリシーのサイズを維持できます。
ジャストインタイム アクセスの詳細については、プロジェクトに対するジャストインタイム特権アクセスを管理するをご覧ください。
サービス アカウントの権限借用
認証されたプリンシパル(ユーザーやサービス アカウントなど)がサービス アカウントとして認証され、サービス アカウントの権限が取得される場合、これはサービス アカウントの権限借用と呼ばれます。サービス アカウントの権限を借用すると、認証されたプリンシパルは、そのサービス アカウントが許可されているすべてのものにアクセスできます。サービス アカウントの権限を借用できるのは、適切な権限を持つ認証済みのプリンシパルのみです。
サービス アカウントを設定して一時的に昇格されたアクセス権を付与するには、サービス アカウントを作成して、ユーザーに一時的に許可するロールを付与します。拒否ポリシーを使用する場合は、予期しない拒否を回避するため、サービス アカウントを関連する拒否ルールから除外することを検討してください。
サービス アカウントを設定したら、ユーザーにサービス アカウントの権限借用を許可して、一時的に昇格したアクセス権を付与できます。ユーザーにサービス アカウントの権限借用を許可する方法はいくつかあります。
有効期間の短いサービス アカウント認証情報を作成できるロールをユーザーに付与します。これにより、ユーザーは有効期間の短い認証情報を使用してサービス アカウントの権限を借用できます。
サービス アカウントの OpenID Connect ID トークン作成者ロール(
roles/iam.serviceAccountOpenIdTokenCreator
)を付与して、ユーザーがサービスの有効期間の短い OpenID Connect(OIDC)ID トークンを作成できるようにします。サービス アカウント トークン作成者のロール(
roles/iam.serviceAccountTokenCreator
)を付与して、ユーザーが次のタイプのサービス アカウント認証情報を作成できるようにします。- OAuth 2.0 アクセス トークン。Google API での認証に使用できます。
- OIDC ID トークン
- 署名付き JSON Web Token(JWT)とバイナリ blob
これらのロールのいずれかをユーザーに付与すると、ユーザーはいつでもサービス アカウントの権限を借用し、自身の権限を昇格させることができます。ただし、機密性の高いリソースが意図せずにアクセスまたは変更される可能性は低くなります。
サービス アカウントの権限借用の方法については、サービス アカウントの権限借用を使用するをご覧ください。
ユーザーが認証され、理由を入力した後、サービス アカウントの有効期間の短い認証情報をユーザーに提供するトークン ブローカー サービスを作成します。これにより、ユーザーは有効期間の短い認証情報を使用してサービス アカウントの権限を借用できます。
この方法では、ユーザーにサービス アカウントの権限借用を許可するタイミングを指定できます。
有効期間の短い認証情報を生成する方法については、有効期間の短いサービス アカウント認証情報を作成するをご覧ください。
サービス アカウントの権限借用の詳細については、サービス アカウントの権限借用をご覧ください。
次のステップ
- 一時的に昇格されたアクセス用に Privileged Access Manager を設定する。
- IAM Conditions を使用して、プリンシパルに一時的なアクセス権を付与する。
- ジャストインタイム アクセス アプリケーションをデプロイする。
- 有効期間の短い認証情報を手動で作成して、サービス アカウントの権限を借用する。