GoogleCloud PCA資格の学習記録 - Storage編

## はじめに

Google CloudのPCA(Professional Cloud Architect)認定資格取得に向けて学習した内容を自分なりに整理します。Google Cloudのサービスに限らず、それを扱う上での関連知識についても触れています。
本記事はStorage編ということで、下記の要素を扱います。

* ストレージ
    * Cloud Storage
    * Cloud Filestore
    * Cloud Source Repositories
* データ転送
    * Transfer Appliance
    * Storage Transfer Service

:::note
この記事における「現在」や「最近」などの表現は、特に断らない限り2025年6月時点を指します
:::

## ストレージ

### Cloud Storage

Google Cloudが提供するオブジェクトストレージサービス

* データは「バケット」単位で管理される
    * バケットはグローバルに一意な名前を持つ
* 容量無制限、高耐久、高可用性
* コマンドでの操作は`gsutil`で行う

#### ストレージクラス

* Standard / Nearline / Coldline / Archive
* 後者のものほど保存料金は安くなるが取り出し料金は高くなる
* ライフサイクル管理: データのアクセス頻度に応じて自動的にストレージクラスを移動したり、削除したり出来る
    * e.g. 90日間アクセスがないオブジェクトをColdlineに移行する、など

#### リージョン

* マルチリージョンストレージ（Multi-region）
    * 複数の大陸内の複数のリージョンにまたがって自動的にレプリケーションされる
    * リージョン単位の障害が発生しても、データの可用性と冗長性を維持できる
    * 世界中にユーザーが居る場合、エンドユーザーへのアクセス高速化にも寄与する
    * 単一のMulti-Regionalバケットは一つの大陸しかカバーしないため、グローバルアクセスするサービスは、複数のMulti-Regionalバケットへの配置が推奨される
* デュアルリージョンストレージクラス（Dual-region）
    * データは2つの特定のリージョン間でレプリケーションされる
    * マルチリージョンストレージと同等の可用性を保ちつつ、リージョンを詳細に指定したい場合に有用
* リージョナルストレージクラス
    * データは単一のリージョン内の複数のゾーンにレプリケーションされる
    * 特定のリージョン内でのソーン障害に対する高可用性が提供される

#### セキュリティ

##### 暗号化

* 転送中の暗号化
    * クライアントとCloud Storage間の転送はSSL/TLSを用いて暗号化される
* 保存中の暗号化
    * 暗号化キーのオプション
        * Google管理キー（GMEK: Google-managed encryption keys）
            * 何も設定しなくても、自動的にGoogleが管理する暗号鍵（GMEK）が使われる
            * デフォルトはこの管理方法であり、通常のユースケースはこれで十分
        * カスタマー管理キー（CMEK: Customer-managed encryption keys）
            * Cloud KMSを使用して暗号化キーを作成・管理する
                * Cloud KMSを通じた鍵のローテーションや無効化などの管理が可能
            * 鍵のライフサイクル制御、アクセス制御、監査ログ記録が可能
            * セキュリティや監査の要件が厳しい場合に有効
            * バケット単位の暗号化、またはオブジェクト単位でアップロード時の指定も可能
        * カスタマー提供キー（CSEK: Customer-supplied encryption key）
            * カスタマー自信が用意した暗号化キーを用いる。Cloud Storageには保存されない
            * 鍵の管理などをすべて自分で行うことになるので、Google Cloudの推奨する管理方法ではない
                * 主にレガシーなセキュリティ要件がある場合に利用される
            * 鍵の設定はboto設定ファイルなどで保持する

##### データ保護

* バージョニング
    * 上書き保存しても以前のバージョンのオブジェクトを取り出せる
    * バケット単位でバージョニングを有効にできる
* バケットロック
    * オブジェクトを一定期間、削除や変更不可の状態にする
* 署名付きURL
    * 特定の操作に対して、特定の期間、アクセスを許可するURLを発行できる
    * Googleアカウントなどの認証情報を持たないユーザーでもリソースに対する操作を行える

##### アクセス制御

* 「均一な管理」と「きめ細かい管理」


### Cloud Filestore

POSIX互換のマネージド型NFSファイルストレージ

* 高いIOPS
* 低レイテンシ
* 高スケーラビリティ

### Cloud Source Repositories

* Gitベースのコードリポジトリサービス
    * GitHubのように、バージョン管理されたソースコードをホスティングするためのもの
* gsutil ではなく gcloud や git などのコマンドでアクセスする


## データ転送

### Transfer Appliance

* ネットワーク転送が困難な場合に大量のデータを物理的にGoogle Cloudへ送るための物理ハードウェア
* リクエストしてからデータがアップされるまでに1週間から10日程度かかる
    * 金額も安価ではない
    * ただネットワーク経由のアップロードはデータ破損のリスクもあるため、Google推奨の方法はこちら
* 数十テラバイトからペタバイト規模のデータ転送で使用される
    * データ規模によっては、ネットワーク経由のほうが速いこともある
        * コストや転送時間を最小限に抑えたいのであれば、ネットワーク経由
        * gsutilコマンドを使用して転送する
        * マルチスレッドで処理すれば処理時間の短縮も期待できる
* 物理ハードウェアに保存されたデータは暗号化され、暗号化されたままアップロードされる
    * Transfer Appliance RehydratorというCLIツールを使い、ユーザーのみが保持する鍵で復元する
    * この仕組みにより、 Googleも中身を見ることができない

### Storage Transfer Service

大規模データの転送や同期を行うためのマネージド型データ転送サービス

* 下記の目的に使用される
    * AWS S3など、サードパーティのオブジェクトストレージからCloud Storageへの移行
    * オンプレミスのファイルシステムからCloud Storageへの移行
        * Storage Transfer Agentというツールを使用
    * Cloud Storage同士で、リージョンをまたいだデータ再配置や複製
* 下記の機能が提供される
    * スケジュール実行
    * 差分転送
    * 失敗時のリトライやログ取得
    * IAMによるアクセス制御