こんにちは、G-gen の荒井です。Google Cloud を利用中に、プロジェクトを間違って消してしまった!もしくは、消しそうになって、ヒヤッとした。なんて経験がある方も多いのではないでしょうか。今回はそういった誤操作によるプロジェクト削除を防止するリーエンを設定使ってみたので記事にしてみました。
はじめに
リーエンとは
Google Cloud におけるリーエンとは、リソースに対して実行できる操作を制限する制約です。事前にリーエン設定を行っておくことで、リーエン設定後に発生した操作よりリーエン設定が優先されます。
聞き慣れない言葉だったので調べてみたところ、不動産業界ではよく使われる言葉で「先取特権(抵当権)」などと呼ばれているようです。
ユースケース
リーエン設定を行うことで、プロジェクトを誤操作による削除から保護することができます。
以下のようなケースがありましたら、リーエンの出番です。
- 本番システムのプロジェクトを誤操作による削除から保護したい
- 複数人が使用する検証環境で、間違って削除されないようにしたい
リーエンに関する注意事項
リーエン設定方法
リーエンの設定は2023年5月現在、Google Cloud コンソールからの設定はできず、gcloud コマンドからのみ実行することができます。
Cloud Shell からの実行、または Cloud SDK の準備が必要となります。
alpha コマンドである
gcloud コマンドは、大きく3つのリリースレベルがあります。今回使用するリーエンのコマンドは alpha
コマンドとなります。(2023年5月時点)
そのため今後予告なく変更がある場合もあります。ご使用の際は自己責任となりますので、ご注意ください。
なおリーエン機能は、コマンド自体は alpha リリースですが、機能としては GA (一般公開) されています。
gcloud コマンドのリリースレベルについては、以下のドキュメントをご参照ください。
指定できる restrictions
ドキュメントでは、restrictions の値として resourcemanager.projects.delete
が記載されています。
例えば、restrictions の値を compute.instances.delete
などに変更することで、プロジェクト削除防止以外の用途にも使えないかと考えるのが自然ですが、現在では利用できません。
現時点では restrictions にはプロジェクト削除防止目的の resourcemanager.projects.delete
のみが指定できます。
事前準備
プロジェクトの準備
【手順1】 Google Cloud へログイン
Google Cloud にログインし Cloud Shell を起動します。
Cloud SDKなど gcloud コマンドが実行できれば Cloud Shell 以外でも構いません。
【手順2】 プロジェクトの移動 対象プロジェクトに移動します。
[ 入力コマンド ]
gcloud config set project <project_id>
[ 出力例 ]
$ gcloud config set project lien-demo Updated property [core/project]. $
【手順3】 プロジェクトの確認 指定のプロジェクトに切り替わったことを確認します。
[ 入力コマンド ]
gcloud config list
[ 出力例 ]
project =
の項目が、対象プロジェクトになっていること。
$ gcloud config list [accessibility] screen_reader = True [component_manager] disable_update_check = True [compute] gce_metadata_read_timeout_sec = 30 [core] account = <Google アカウント> disable_usage_reporting = True project = lien-demo [metrics] environment = devshell Your active configuration is: [cloudshell-26733]
リーエン設定方法
リーエンの作成
【手順4】 リーエンの作成
以下のコマンドを入力し、プロジェクトにリーエンを作成します。
[ 入力コマンド ]
gcloud alpha resource-manager liens create \ --project < project_id > \ --restrictions=resourcemanager.projects.delete \ --reason= < 説明 >
[ 出力例 ]
$ gcloud alpha resource-manager liens create \ --project lien-demo \ --restrictions=resourcemanager.projects.delete \ --reason="重要プロジェクトのためリーエンで削除保護" $
詳細なコマンドの構文はリファレンスの確認をお願いします。
リーエン設定の確認
【手順5】 リーエン設定確認
以下のコマンドを入力し、リーエンが作成されていることを確認します。
[ 入力コマンド ]
gcloud alpha resource-manager liens list
[ 出力例 ]
$ gcloud alpha resource-manager liens list NAME: xxxxxxxxxxxxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ORIGIN: < Google アカウント > REASON: 重要プロジェクトのためリーエンで削除保護 $
【手順6】 削除テスト
削除防止が働いているかプロジェクト削除をテストします。
ナビゲーションメニュー > IAMと管理 > リソースの管理 > プロジェクトを削除
削除エラーとなるメッセージが表示され、リーエン設定が適用されていることが確認できました。
リーエンの削除
【手順7】リーエンの削除
リーエンで保護したプロジェクトを削除したい場合、リーエンを削除する必要があります。
コマンド内の < NAME > には、gcloud alpha resource-manager liens list
を実行した際に表示されるリーエンの名前 (ID) を入力します。
[ 入力コマンド ]
gcloud alpha resource-manager liens delete <NAME>
[ 出力例 ]
$ gcloud alpha resource-manager liens delete xxxxxxxxxxxxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Deleted [liens/xxxxxxxxxxxxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx]. $
【手順8】 プロジェクトの削除
リーエンを削除したことで、プロジェクトが削除できるようになったか確認します。
ナビゲーションメニュー > IAMと管理 > リソースの管理 > プロジェクトを削除
削除エラーが消え、プロジェクトを削除することができました。
以上で、リーエンの設定作業は完了です。
大事なプロジェクトの削除対策には、是非リーエンを作成して安全に運用をしてみてください。
荒井 雄基 (記事一覧)
クラウドソリューション部
オンプレ環境のネットワーク・サーバーシステムを主戦場としていたが、クラウド領域にシフト。
Google Cloud 認定資格 7冠
現在は Google Workspace を中心に企業の DX 推進をサポート。
最近頑張っていることは、子どもがハマっている戦隊モノの踊りを踊れるようになること。