このページでは、Spanner データベースが誤って削除されないように保護する方法について説明します。
Spanner データベースの削除保護によって、データベースの削除に必要な IAM 権限を持つユーザーまたはサービス アカウントによる既存のデータベースの誤った削除を防ぐことができます。データベースの削除保護を有効にすることで、アプリケーションとサービスにとって重要なデータベースを保護できます。 データベースの削除保護にポイントインタイム リカバリとバックアップ機能を併用して、Spanner データベースに包括的なデータ保護機能のセットを提供します。
デフォルトでは、新しいデータベースを作成すると、削除保護設定は無効になります。データベースの作成に成功すると、削除保護設定を有効にすることができます。さらに、この設定は既存のデータベースで有効にすることもできます。複数のデータベースを保護する場合は、各データベースの設定を個別に有効にします。削除保護を有効 / 無効にしても、データベースへのパフォーマンス上の影響はありません。データベース保護が有効なデータベースを削除する必要がある場合は、データベースを削除する前に保護を無効にする必要があります。
制限事項
次のシナリオでは、データベースの削除保護を有効にできません。
- データベースが削除中の場合。
- データベースをバックアップから復元している途中の場合。(復元オペレーションの完了後は、データベースの保護を有効にできます)。
また、データベースのバックアップとバックアップから復元されたデータベースは、元のデータベースのデータベース削除保護の設定を継承しません。バックアップからデータベースを復元した後、データベースの削除保護を個別に有効にする必要があります。
プロジェクトを削除する場合、Spanner データベース削除保護を使用してもデータベースやインスタンスの削除は防止されません。プロジェクトを削除する場合の影響については、プロジェクトのシャットダウン(削除)をご覧ください。
IAM を使用したアクセス制御
データベースの削除保護設定を有効にするには、特定の IAM 権限が必要です。
データベースの削除保護を有効または無効にするには、spanner.databases.update
権限が必要です。データベース構成のステータスを表示するだけの場合は、必要となるのは spanner.databases.list
権限または spanner.databases.get
権限です。Spanner IAM 権限を付与する方法については、IAM 権限を適用するをご覧ください。
データベースに事前定義された Spanner データベース管理者 roles/spanner.databaseAdmin
ロールがある場合は、データベースの削除保護を更新して有効にできます。
既存のデータベースでデータベースの削除保護設定を有効にすると、データベースが誤って削除されるのを防ぐことができます。
データベースの削除保護を有効にする
データベースの削除保護を有効にするには、gcloud CLI、クライアント ライブラリ、RESTまたはRPC API を使用します。Google Cloud コンソールを使用してデータベースの削除保護を有効にすることはできません。
gcloud
データベースの削除保護設定を有効にするには、次のコマンドを実行します。
gcloud spanner databases update
DATABASE_ID --instance=INSTANCE_ID
--enable-drop-protection [--async]
次のオプションは必須です。
DATABASE_ID
- データベースの ID。
INSTANCE_ID
- データベースのインスタンスの ID。
次のオプションは省略可能です。
--async
- 処理中のオペレーションの完了を待たずに、直ちにコマンドを終了します。
クライアント ライブラリ
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
データベースの削除保護が有効かどうかを確認する
データベースの削除保護が有効かどうかを確認するには、データベース構成を表示します。
gcloud
データベースの削除保護が有効になっているかどうかを確認するには、gcloud spanner databases describe
コマンドを実行してデータベースに関する詳細情報を取得するか、gcloud spanner databases list
を実行してインスタンス内のデータベースに関する詳細情報を取得します。
gcloud spanner databases describe
projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID
次のオプションは必須です。
PROJECT_ID
- データベースのプロジェクトの ID。
INSTANCE_ID
- データベースのインスタンスの ID。
DATABASE_ID
- データベースの ID。
削除保護が有効になっている場合、出力に enableDropProtection: true
パラメータが表示されます。
データベースの削除保護を無効にする
データベースでこの保護が不要になった場合や、この設定が有効になっているデータベースを削除する必要がある場合は、データベースの削除保護を無効にできます。
削除保護が有効になっているデータベースが 1 つ以上存在するインスタンスを削除するには、そのインスタンスを削除する前に、まずそのインスタンスのすべてのデータベースの削除保護を無効にする必要があります。
gcloud
データベースの削除保護設定を無効にするには、次のコマンドを実行します。
gcloud spanner databases update
DATABASE_ID --instance=INSTANCE_ID
--no-enable-drop-protection [--async]
次のオプションは必須です。
DATABASE_ID
- データベースの ID。
INSTANCE_ID
- データベースのインスタンスの ID。
次のオプションは省略可能です。
--async
- 処理中のオペレーションの完了を待たずに、直ちにコマンドを終了します。
次のステップ
- データベースの作成方法と管理方法を確認する。
- データベースのバックアップと復元方法を学習する。
- スキーマを更新する方法を学習する。