特定のVMマシンの削除を禁止させる(Google Cloud 拒否ポリシー)

特定のVMマシンの削除を禁止させる(Google Cloud 拒否ポリシー)

特定のIAMの操作制限を行う場合には「拒否ポリシー」が最適です。例えばCompute管理者権限を持っていても、VMの削除を禁止できます。
Clock Icon2025.01.21

概要

目的

タグに基づく拒否ポリシーを利用して、特定のフォルダ配下に存在するVMマシンの削除を特定のユーザーに対して禁止させます。IAM Conditionsの拒否ポリシーを利用するので「どのリソース階層で、どのユーザーの、どの権限を剥奪するか」を指定することで禁止を実現できます。

今回は「Test-Muroi-Folderで、yasunari××××@gmail.comの、compute.delete権限とcompute.update権限」を剥奪します。yasunari××××@gmail.comは、本来であればCompute管理者ロールを保有しているため、VMの削除とアップデートはできるはずです。

スクリーンショット 2025-01-20 10.29.41

メリット

組織統一的なリソースを作成し、ユーザーにそのリソースを触らせたくない場合などに役立ちます。例えば、組織ポリシーでVMの外部IPの付与を禁止している代わりに、Proxyサーバーを個々のプロジェクトに一律にデプロイしている場合に、そのProxyサーバーの削除を禁止させることで、操作ミスによるインターネットとの通信に障害が出ることを防ぎます。

具体的流れ

今回の実演は以下のような流れで実施しました。

  1. 拒否ポリシーの作成に必要な権限の付与
  2. VMの作成時にタグを追加
  3. 拒否ポリシーを作成
  4. 拒否ポリシーの適応を確認

実演

1.必要な権限

拒否ポリシーを作成するには、組織に対して以下の権限が必要です。

  • 拒否管理者

スクリーンショット 2025-01-20 8.39.55

2.VMにタグの追加

予め組織単位で作成していたタグを新規VMの作成時に追加していきます。

  • ADD TAGSを押下する
    スクリーンショット 2025-01-20 8.59.03

組織に存在するタグを利用します。

  • 現在の組織を選択する

スクリーンショット 2025-01-20 8.59.33

タグキーとタグの値をそれぞれ選択します。

  • キー:vm-creator、値:ユーザーAのメールアドレス
    スクリーンショット 2025-01-20 9.01.21

3.拒否ポリシーの作成

IAMと管理から、IAMロールの付与画面に移動します。許可しないタブに移動し、+拒否ポリシーを作成を押下します。
スクリーンショット 2025-01-20 8.43.08

リソースにはフォルダを指定し、拒否ポリシーの名前とIDを入力します。(配下全てのプロジェクトに適応させます)

  • 名前、IDともに「deny-remove-vm」
    スクリーンショット 2025-01-20 9.06.47

新しい拒否ルールに拒否を適応させるユーザーと例外ユーザーを指定します。

  • 拒否を適応させるユーザーをB、操作可能な例外ユーザーをA
    スクリーンショット 2025-01-20 9.07.00

どの権限を拒否するかを指定します。

  • compute.googleapis.com/instances.delete、compute.googleapis.com/instances.updateを拒否する
    スクリーンショット 2025-01-20 9.07.09

拒否の条件を入力していきます。
スクリーンショット 2025-01-20 9.07.21

拒否ルールが適用される条件を、タグや属性に基づいて設定していきます。

  • 「vm-creator/ユーザーAのメールアドレス」 というタグに対して適応させる
    スクリーンショット 2025-01-20 9.06.10

作成を完了させると拒否ポリシーが作成されていることが確認できます。
スクリーンショット 2025-01-20 9.08.13

4.拒否ポリシーの適応を確認

まず、yasunari××××@gmail.com(ユーザーA)に対して、Compute管理者ロールを割り当てます。これで、そのプロジェクトに存在するVMの操作は全般行えるはずです。
スクリーンショット 2025-01-20 9.09.56

ユーザーBでVMの画面に移動し、先ほどの2.VMにタグの追加で利用したVMを削除してみようとしますが、削除の文字がグレーアウトされていることがわかります。
スクリーンショット 2025-01-20 10.09.41

最後に、ユーザーAで削除できることも確認して、終了です。
スクリーンショット 2025-01-20 10.41.50

まとめ

特定のリソースの操作を条件付きで禁止させるには、拒否ポリシーがおすすめです。基本的な制限は組織ポリシーで特定の条件を指定し、さらに細かい粒度で操作を制限させたい場合に検討してください。

参考

https://cloud.google.com/iam/docs/deny-access?hl=ja

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.