はじめに
「Google Cloudを使うことになったけど、何から始めればいいかわからない」という方へ。
この記事では、プロジェクトの作成方法からIAMによるアクセス制御、リージョン選定、課金管理まで、Google Cloudを使う前に知っておきたい基礎知識を解説します。
リソース階層
~複数のリソースを管理するしくみ~
リソース階層の構造
Google Cloudでは、リソースを階層的に管理します。
各レベルの説明
| レベル | 説明 |
|---|---|
| 組織 | 企業または組織全体を表す最上位ノード |
| フォルダ | 部門やチーム単位でプロジェクトをグループ化 |
| プロジェクト | リソースの基本的な管理単位 |
| リソース | 実際のサービスインスタンス |
組織(Organization)
組織は、Google WorkspaceまたはCloud Identityドメインに紐づく最上位のノードです。
特徴:
- 企業全体のポリシーを一元管理
- すべてのプロジェクトとフォルダを包括
- 組織管理者による統制が可能
フォルダ(Folder)
フォルダは、プロジェクトをグループ化するためのコンテナです。
使用例:
- 部門別(開発部、運用部、営業部)
- 環境別(開発、ステージング、本番)
- 製品別(製品A、製品B)
組織
├── 開発部フォルダ
│ ├── 製品Aプロジェクト
│ └── 製品Bプロジェクト
└── 運用部フォルダ
├── 監視プロジェクト
└── ログプロジェクト
プロジェクト(Project)
プロジェクトは、Google Cloudにおけるリソース管理の基本単位です。
| 属性 | 説明 |
|---|---|
| プロジェクト名 | 人間が読みやすい名前(後から変更可能) |
| プロジェクトID | グローバルに一意な識別子(変更不可) |
| プロジェクト番号 | システムが自動生成する数値ID |
リソース階層のポリシー継承
上位で設定したIAMポリシーは、下位に継承されます。
継承の例:
- 組織レベルで付与した権限は、すべてのフォルダ・プロジェクトに継承
- フォルダレベルの権限は、そのフォルダ配下のプロジェクトに継承
- 下位で権限を制限することはできない(追加のみ可能)
IAM
~リソースへのアクセスを管理する~
IAMとは
IAM(Identity and Access Management)は、「誰が」「何に対して」「何ができるか」を制御するサービスです。
IAMの主要な概念
メンバー(Principal)
アクセス権を付与する対象:
| 種類 | 説明 |
|---|---|
| Googleアカウント | 個人のユーザーアカウント |
| サービスアカウント | アプリケーション用のアカウント |
| Googleグループ | 複数ユーザーのグループ |
| Google Workspaceドメイン | 組織全体 |
| allUsers | インターネット上のすべてのユーザー |
| allAuthenticatedUsers | 認証済みのすべてのユーザー |
ロール(Role)
権限のセット:
| 種類 | 説明 | 例 |
|---|---|---|
| 基本ロール | 広範な権限 | Owner, Editor, Viewer |
| 事前定義ロール | サービス別の権限 | roles/compute.admin |
| カスタムロール | ユーザー定義の権限 | 最小権限の原則に対応 |
権限(Permission)
個々の操作権限(例:compute.instances.create)
IAMポリシーの設定
# gcloud でIAMポリシーを設定
gcloud projects add-iam-policy-binding my-project \
--member="user:alice@example.com" \
--role="roles/compute.viewer"
サービスアカウント
サービスアカウントは、アプリケーションやVMがGoogle Cloud APIにアクセスするために使用する特別なアカウントです。
| 種類 | 説明 |
|---|---|
| デフォルトサービスアカウント | サービス有効化時に自動作成 |
| ユーザー管理サービスアカウント | 手動で作成・管理 |
| Googleマネージドサービスアカウント | Googleがサービス用に作成 |
IAMのベストプラクティス
- 最小権限の原則:必要最小限の権限のみ付与
- グループの活用:個人ではなくグループに権限を付与
- サービスアカウントの適切な使用:人間のアカウントと分離
- 定期的なレビュー:不要な権限の削除
- 条件付きアクセス:時間や場所による制限
Workload Identity Federation
2024年以降推奨されているWorkload Identity Federation for GKEにより、KubernetesサービスアカウントにIAMロールを直接付与できます。
リージョンとゾーン
~世界中に展開されているデータセンター~
リージョンとゾーンの概念
リージョンの中にゾーンは内包される関係性です。
リージョン
リージョンは、特定の地理的エリアを表します。
| 属性 | 説明 |
|---|---|
| 独立したロケーション | 他のリージョンと物理的に分離 |
| 複数のゾーン | 通常3つ以上のゾーンで構成 |
| 低遅延 | 同一リージョン内は低遅延で通信可能 |
ゾーン
ゾーンは、リージョン内の独立したデプロイメントエリアです。
特徴:
- 独立した電源、冷却、ネットワーク
- 障害ドメインの分離
- 同一リージョン内のゾーン間は高速接続
2024年時点のグローバル展開
| 地域 | リージョン数 | 代表的なリージョン |
|---|---|---|
| 北米 | 13 | us-central1, us-east4, us-west1 |
| 南米 | 3 | southamerica-east1 |
| ヨーロッパ | 11 | europe-west1, europe-north1 |
| アジア太平洋 | 13 | asia-northeast1, asia-southeast1 |
| 中東 | 3 | me-west1, me-central1 |
| アフリカ | 1 | africa-south1 |
日本のリージョン
| リージョン | 場所 | 開設年 | ゾーン数 |
|---|---|---|---|
| asia-northeast1 | 東京 | 2016年 | 3 |
| asia-northeast2 | 大阪 | 2019年 | 3 |
東京リージョン(asia-northeast1)の特徴:
- 日本初のGoogle Cloudリージョン
- 東京、札幌、大阪、名古屋などの主要都市に低遅延でアクセス
- フルラインのGoogle Cloudサービスを提供
リージョンの選定基準
| 基準 | 説明 |
|---|---|
| 遅延要件 | ユーザーに近いリージョンを選択 |
| 可用性要件 | 複数リージョンでの冗長構成 |
| コンプライアンス | データの地理的制限 |
| サービス提供 | 必要なサービスの提供状況 |
| コスト | リージョンによる料金差 |
マルチリージョン構成
高可用性を実現するためのマルチリージョン構成:
Cloud Billing
~料金を管理するしくみ~
Cloud Billingの概要
Cloud Billingは、Google Cloudの料金を管理するためのサービスです。
請求先アカウント
請求先アカウント(Billing Account)は、料金の支払い方法を定義します。
種類:
- セルフサービス:クレジットカードで支払い
- 請求書払い:月次請求書による支払い(大規模顧客向け)
料金体系
Google Cloudは主に従量課金制を採用しています。
| 課金方式 | 説明 |
|---|---|
| 従量課金 | 使用したリソース量に応じて課金 |
| 秒単位課金 | Compute Engineは秒単位で課金 |
| 継続利用割引 | 長期利用で自動的に割引適用 |
| 確約利用割引 | 1年または3年の契約で大幅割引 |
コスト管理ツール
| ツール | 説明 |
|---|---|
| Cloud Billing | 請求書、支払い履歴の確認 |
| Cost Management | コストの分析と最適化 |
| 予算アラート | 設定した金額に達したら通知 |
| エクスポート | BigQueryへのコストデータエクスポート |
| レコメンデーション | コスト最適化の提案 |
予算の設定
予算を設定して、想定外のコストを防止:
- Cloud Billing Consoleにアクセス
- 「予算とアラート」を選択
- 新しい予算を作成
- 対象プロジェクトとサービスを選択
- 予算額とアラートしきい値を設定
コスト最適化のヒント
| 施策 | 効果 |
|---|---|
| 適切なマシンタイプ選択 | 過剰スペックを避ける |
| Preemptible/Spot VM | 最大91%のコスト削減 |
| 確約利用割引 | 最大70%のコスト削減 |
| 自動スケーリング | 需要に応じたリソース調整 |
| 未使用リソースの削除 | 使われていないリソースを特定・削除 |
ラベルによるコスト管理
リソースにラベルを付与して、コストを追跡:
# ラベルの付与例
gcloud compute instances add-labels my-instance \
--labels=environment=production,team=engineering
ラベルによる集計:
- チーム別のコスト
- 環境別(本番、開発など)のコスト
- プロジェクト別のコスト
まとめ
この記事では、Google Cloudを使うための基本的な手順と概念について学びました:
- Webブラウザから簡単にGoogle Cloudを利用開始できる
- Google Cloud Consoleで視覚的にリソースを管理
- リソース階層(組織、フォルダ、プロジェクト)で体系的に管理
- IAMで適切なアクセス制御を実現
- リージョンとゾーンで可用性と低遅延を実現
- Cloud Billingでコストを効率的に管理