セキュリティとプライバシーの留意事項
概要
このヘルプでは、gsutil で実施されているデータ保護対策について詳しく説明します。また、ユーザーがセキュリティを維持するために行うおすすめの対策についても紹介します。
Transport Layer Security
gsutil は、トランスポート層の暗号化(HTTPS)を使用してすべての操作を実行しています。これにより、共有ネットワークからの情報漏洩を防いでいます。また gsutil では、認証(OAuth2)用として、および再開可能なアップロードの識別子として「署名なしトークン」を使用しているため、この暗号化は重要であり、これらのトークンを盗聴や再利用から保護する必要があります。
また gsutil は、XML API を使用した古い HMAC 形式の認証もサポートしています。HMAC 認証では、署名なしトークンを使用していないため、盗聴やリプレイ攻撃の可能性はありませんが、データのトラフィックは暗号化する必要があります。
セキュリティをさらに強化するため、gsutil は Cloud Storage JSON API の相互 TLS(mTLS)をサポートしています。mTLS では、クライアントはサーバー証明書を確認し、サーバーはクライアントを検証します。mTLS を有効にする方法については、インストール ドキュメントをご覧ください。
ローカル ファイル ストレージのセキュリティ
gsutil では、さまざまな対策を行って、ローカルに保存されたファイルを保護しています。
gcloud init
、gsutil config -a
、またはgsutil config -e
コマンドが実行されると、生成される .boto 構成ファイルにファイル保護モード 600("-rw-------")が設定されるため、ユーザー(またはスーパーユーザー)のみがそれを読み取ることができます。このファイルには、認証情報やプロキシ構成など、セキュリティに影響を及ぼす情報が含まれているので、この保護対策は重要です。これらのコマンドを実行してサービス アカウントの認証情報を作成すると、ローカルに保存される秘密鍵ファイルにファイル保護モード 600 が設定されます。
デフォルトのロギングレベルでは、OAuth2 トークンやプロキシ情報など、セキュリティに影響を及ぼす情報は gsutil コマンドのログ出力に含まれません。デバッグを行う場合、gsutil -D オプションを使用すると、ログの出力レベルを上げることができます。詳細は、以下の「ユーザーが実施する予防策」をご覧ください。
Windows では保護モードが使用できません。Windows で gsutil を使用する場合には、ファイル システムを暗号化し、アカウントのパスワードを強化することをおすすめします。
gsutil がディスクに一時的に書き込む重要なファイル
gsutil は一時ファイルのデータをバッファに格納します。たとえば、次のような場合にバッファを使用します。
圧縮されたデータが gsutil cp -z/-Z でアップロードされると、gsutil は一時ファイルのデータに保護モード 600 を設定し、バッファに保存します。この一時ファイルは、アップロードの完了後に削除されます。gsutil cp -z/-Z でアップロードされたファイルや、Content-Encoding が "gzip" に設定されているプロセスの場合も同様です。ただし、アップロードの実行中に gsutil プロセスを終了すると、部分的に書き込まれたファイルが残ります。一時ファイルの書き込み先や一時ディレクトリの場所を変更する方法については、gsutil help cp の「一時ディレクトリの変更」をご覧ください。
再開可能なアップロードを実行すると、gsutil は ~/.gsutil/tracker-files の下にアップロード ID を保存し、保護モード 600 を設定します。前述のように、これは署名なしトークンで、安全に保護する必要があります。これらのファイルはアップロードの完了後に削除されます。ただし、アップロードが正常に完了しないと、再開可能なアップロードを後で実行できるように、トラッカー ファイルが残ります。このトラッカー ファイルにはアップロード試行失敗の記録が蓄積されていきます。再開可能アップロードの ID の有効期間は 1 週間で、経過日数が 1 週間に満たないファイルはセキュリティ リスクが存在する可能性があります。中止したアップロードの ID がトラッカー ディレクトリに残っていると、リスクが非常に高くなります。アップロード スクリプトを変更して、トラッカー ファイルを削除するか、cron ジョブを使用して転送ディレクトリを定期的に消去してください。
gsutil rsync コマンドを実行すると、一時ファイル(保護レベル 600)が生成されます。このファイルには、名前、サイズ、元のファイルのチェックサム、宛先のディクショナリ / バケットなどの情報が含まれます。これらの情報は、rsync の完了後に削除されます。 ただし、rsync がファイルの一覧を作成しているときに、gsutil プロセスを終了すると、ファイルが削除されずに残ります。
gsutil は、標準の OS unlink システム呼び出しを使用して、一時ファイルを削除します。この呼び出しでは、データワイプを行いません。このような一時ファイルのコンテンツは簡単に復元されてしまいます。
アクセス制御リスト
別の ACL(たとえば、gsutil cp -a の実行)を指定しない限り、バケットに書き込まれたデフォルト オブジェクトはそのバケットに設定されたデフォルトのオブジェクト ACL を使用します。この ACL を変更しない限り(gsutil defacl コマンドで実行)、すべてのプロジェクト編集者にオブジェクトへの書き込みが許可され、オブジェクトのメタデータへの読み取りと書き込みが許可されます。また、すべてのプロジェクト閲覧者にオブジェクトへの読み取り権限が許可されます。
Cloud Storage のアクセス制御システムには、オブジェクトが一般公開で読み取り可能であることを指定する機能が含まれています。この権限を公開して書き込むオブジェクトすべてについて、それが意図したものであることを確認してください。いったんインターネットに公開したデータは、多くの場所にコピーされるため、この権限付きで書き込まれたオブジェクトに対する読み取り制御を回復することは、事実上不可能です。
Cloud Storage のアクセス制御システムには、バケットが一般公開で書き込み可能であることを指定する機能が含まれています。この方法でバケットを構成することは多く点で便利ですが、この権限は使用しないようにしてください。不正なコンテンツ、ウイルスなどのマルウェアの配布に悪用される可能性があります。バケットに保存されたコンテンツに対する法的および金銭的な責任はバケットの所有者にあります。Google アカウントのないユーザーにコンテンツを公開する場合には、署名付きの URL を使用してください(gsutil help signurl をご覧ください)。
ソフトウェアの整合性と更新
gsutil は、バンドルされている Cloud SDK リリースの一部として配布されています。この配信方法では、ソフトウェアの整合性を保護するため、さまざまなセキュリティ対策が行われています。これ以外の提供元(ミラーサイトも含む)から gsutil のコピーは取得しないでください。
プロキシの使用
gsutil は、Squid や多くの市販製品と同様に、プロキシ経由のアクセスに対応しています。このドキュメントではプロキシの機能について詳しく説明しませんが、ウィルス スキャン、情報漏洩防止、証明書 / CA の信頼性に対する制御、コンテンツ タイプによるフィルタリングなど、多くのセキュリティ関連の機能をサポートするようにプロキシを設定できます。これらの機能を使用すると、処理速度が遅くなったり、正規の gsutil の動作がブロックされる場合があります。たとえば、ウイルス スキャンはファイルのコンテンツを復号しますが、この機能を実行するには、プロキシが gsutil との接続を終了し、新しい接続を確立する必要があります。このとき、プロキシがコンテンツを書き換え、チェックサムの検証でエラーが発生する場合もあります。
プロキシの構成の詳細については、gcloud init
、gsutil -a
、または gsutil -e
コマンドによって .boto 構成ファイルに生成されるプロキシのヘルプテキストをご覧ください。
保存データの暗号化
すべての Cloud Storage データは自動的に暗号化された状態で保存されますが、独自の暗号鍵を指定することもできます。詳細については、Cloud Storage の暗号化をご覧ください。
データのプライバシー
Google が、認証情報やパスワードなど、セキュリティに影響を及ぼす情報をユーザーに確認することはありません。Google の社員を装い、このような情報を確認する詐欺行為が起きる可能性があります。十分に注意してください。
測定データ
gsutil perfdiag コマンドを実行すると、パフォーマンス関連のさまざまな測定データが収集されます。また、ローカル システムやネットワーク環境の情報も収集されます。これらの情報は、パフォーマンスの問題を解決するために使用されます。ユーザー自身が送信を選択しない限り、この情報が Google に送信されることはありません。
ユーザーが実施する予防策
最も重要な注意事項は、認証情報を絶対に共有しないことです。各ユーザーは異なる認証情報を持つ必要があります。
gsutil -D(デバッグ情報の生成)を実行すると、出力に OAuth2 の更新トークンやアクセス トークンが含まれます。トラブルシューティングや技術サポートでこのデバッグ情報を送信する前に、このような情報を必ず消去してください。
gsutil --trace-token(トレースを Google に直接送信)を実行すると、トレースのコンテンツに、OAuth2 トークンやトレース時にアクセスされたファイルのコンテンツなど、重要な情報が含まれる場合があります。
.boto 構成に含まれる顧客指定の暗号鍵もセキュリティに影響を及ぼす重要な情報です。
.boto 設定にはプロキシ設定も含まれています。プロキシの設定でユーザー情報とパスワードが必要になる場合もあります。プロキシの設定でユーザー情報やパスワードが必要でない場合でも、プロキシのホストやポート番号などは重要なセキュリティ情報になります。.boto 構成ファイルに対するアクセスを保護してください。
本番環境から gsutil を使用する場合(データセンターのホストから cron ジョブを実行する場合など)、個人のユーザー アカウントではなく、サービス アカウントの認証情報を使用してください。これらの認証情報は、社員が退社した場合でもアクセス情報が漏洩しないように設計されています。