jpskill.com
🛠️ 開発・MCP コミュニティ

landing-zones

OCI環境で複数のテナントを構築する際、コンパートメント構成やセキュリティゾーン設定、ネットワーク設計などを自動化し、セキュリティ基準への準拠を支援するSkill。

📜 元の英語説明(参考)

Use when designing multi-tenant OCI environments, standing up landing zone Terraform stacks, enforcing Security Zones, or planning hub-spoke network topology. Covers OCI-specific compartment hierarchies, multi-tenant IAM decision trees, Security Zone automation, CIS Foundations compliance, and DRG routing. Keywords: landing zone, compartments, Security Zone, hub-spoke, DRG, CIS, multi-tenant, tenancy, IAM policy.

🇯🇵 日本人クリエイター向け解説

一言でいうと

OCI環境で複数のテナントを構築する際、コンパートメント構成やセキュリティゾーン設定、ネットワーク設計などを自動化し、セキュリティ基準への準拠を支援するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o landing-zones.zip https://jpskill.com/download/9167.zip && unzip -o landing-zones.zip && rm landing-zones.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9167.zip -OutFile "$d\landing-zones.zip"; Expand-Archive "$d\landing-zones.zip" -DestinationPath $d -Force; ri "$d\landing-zones.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して landing-zones.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → landing-zones フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

OCI Landing Zones - エキスパートアーキテクチャ

絶対にやってはいけないこと

絶対にフラットなコンパートメント構造を作成しない

BAD:
tenancy/ app1-dev, app1-test, app1-prod, app2-dev ...

問題点:
- すべての開発環境に単一のポリシーを適用できない
- チームごとに管理を委任できない
- コストレポートが構造化されていない
- ポリシーの重複がチーム数に対して O(n) で増加する

GOOD - 階層構造:
tenancy/
  Network/ (Hub, Spokes)
  Security/ (Vault, Logging)
  Workloads/
    App1/ (Dev, Test, Prod)
    App2/ (Dev, Test, Prod)
  Shared-Services/ (Identity, Monitoring)

ポリシーの継承はツリーを方向に流れます。Workloads/ の1つのポリシーがすべてのワークロードに適用されます。

絶対に 10.0.0.0/16 を複数の VCN で再利用しない

BAD - すべての場所で同じ CIDR:
Dev VCN:  10.0.0.0/16
Test VCN: 10.0.0.0/16   # Dev とピアリングできない
Prod VCN: 10.0.0.0/16   # どちらともピアリングできない

VCN CIDR は変更できません。CIDR が間違っている = 完全な再構築 + ダウンタイム。

GOOD - 重複しない割り当て:
Hub VCN:  10.0.0.0/16
Dev VCN:  10.10.0.0/16
Test VCN: 10.20.0.0/16
Prod VCN: 10.30.0.0/16

本番コンパートメントで Security Zones を絶対にスキップしない

# BAD: ガードレールがないコンパートメント
oci iam compartment create --compartment-id $PARENT --name "Prod"
# 結果: 誰でもパブリック IP、暗号化されていないバケットなどを作成できる

# GOOD: Security Zone はリソース作成前にポリシーを適用する
oci cloud-guard security-zone-recipe create \
  --compartment-id $TENANCY_ID \
  --display-name "CIS-Prod-Recipe" \
  --security-policies '["deny-public-ip","deny-public-bucket"]'

oci cloud-guard security-zone create \
  --compartment-id $PROD_COMPARTMENT_ID \
  --display-name "Prod-Security-Zone" \
  --security-zone-recipe-id $RECIPE_ID

Security Zones はリソース作成に違反を防ぎます。監査は侵害にそれらを見つけます。

ワークロードリソースをルートコンパートメントに絶対に配置しない

ルートコンパートメントは、テナンシ全体の IAM (ユーザー、グループ、ポリシー) 専用です。
ルート内のリソースはガバナンスをバイパスし、委任できず、CIS OCI Foundations Benchmark に違反します。

ルートには以下のみを含める必要があります。
- トップレベルの子コンパートメント
- テナンシ全体の IAM ポリシー
それ以外は何もありません。

開発リソースと本番リソースを同じコンパートメントに絶対に混在させない

開発アクセス権を持つ開発者は、誤って本番リソースを削除する可能性があります。環境ごとに異なるバックアップポリシー、タグ付け戦略、または予算アラートを設定できません。

タグ付け戦略を絶対にスキップしない

# タグがない場合: "oci.compute.instance: $5,234/月" — どのチーム?どのプロジェクト?
# チャージバックできず、無駄を特定できません。

# 正しい方法: 必須のデフォルト値を持つタグ名前空間を作成する
oci iam tag-namespace create --compartment-id $TENANCY_ID --name "Organization"
# 作成: CostCenter, Environment, Owner タグ
# コンパートメントレベルでタグのデフォルトを適用する (すべてのリソースに自動的に適用される)
oci iam tag-default create \
  --compartment-id $WORKLOAD_COMPARTMENT_ID \
  --tag-definition-id $COSTCENTER_TAG_ID \
  --value '${iam.principal.name}'

スポーク VCN からのインターネットへの直接的なエグレスを絶対に許可しない

BAD: スポークサブネット → Internet Gateway
- データ流出を検出できない
- エグレスコストはスポークごとに月額 $3k-5k (従量制)
- DPI またはエグレスフィルタリングがない

GOOD - 集中制御によるハブスポーク:
Spoke → DRG → Hub VCN → Network Firewall → NAT Gateway → Internet
- ファイアウォールポリシーによる単一のエグレスポイント
- VCN Flow Logs による完全な可視性

SLA を必要とする本番ワークロードに単一リージョンを絶対に利用しない

リージョン停止 = 完全なダウンタイム。DR なしでは自動フェイルオーバーはできません。

マルチリージョンパターン:
プライマリ: us-ashburn-1 + DR: us-phoenix-1
- データベース用の Autonomous Data Guard (ほぼゼロの RPO)
- DNS フェイルオーバー用の Traffic Manager (RTO ~15 分)
- Object Storage クロスリージョンレプリケーション
- DR リージョンでのミラーコンパートメント構造

マルチテナント IAM 決定木

ワークロードはシングルテナントですか?
│
├─ YES → 環境中心モデル
│        コンパートメント: Network, Shared-Services, Workloads/App/Dev-Test-Prod
│        IAM: 環境ごとのグループ (DevAdmins, ProdOps) を環境コンパートメントにスコープ
│
└─ NO (マルチテナント SaaS)?
    │
    ├─ 厳密なテナント分離が必要ですか?
    │  ├─ YES → テナントごとのコンパートメント: Org/TenantA, Org/TenantB
    │  │        インスタンスプリンシパル認証用のテナント VCN ごとの Dynamic Group
    │  │        ポリシー: `allow dynamic-group TenantA-VMs to manage all-resources
    │  │                  in compartment TenantA`
    │  └─ NO → 共有コンパートメント + テナントごとのタグ付け
    │           (セットアップが高速、共有された影響範囲)
    │
    ├─ テナントごとに複数の環境がありますか?
    │  └─ ネスト: TenantA/Dev, TenantA/Test, TenantA/Prod
    │           ポリシーはツリーを下方向に自動的に継承されます
    │
    └─ 集中化された共有サービス?
         └─ Shared-Services コンパートメント (Logging, Monitoring, Identity)
            テナンシレベルの Ops グループに最小権限の読み取りアクセスを許可する

マルチテナント向けの IAM ポリシーテンプレート:

Allow group TenantA-Admins to manage all-resources in compartment TenantA
Allow dynamic-group TenantA-VCN to manage virtual-network-family in compartment TenantA
Allow group Shared-Network to use virtual-network-family in compartment Shared-Services

ガードレール:

  • ルートでテナント固有のポリシーを許可しないでください。テナントコンパートメント階層にスコープを設定してください
  • 新しいテナントを追加する前に、DRG ルート承認ワークフローを要求してください
  • 詳細なポリシー動詞構文については、iam-identity-management スキルを参照してください

Security Zone ロールアウトチェックリスト

  1. コンパートメントのインベントリ — タグ Environment=Prod でフィルタリングされた JSON をエクスポートします
  2. レシピの作成/更新 — Oracle CIS レシピを複製し、カスタムポリシー (パブリック LB なし、CMEK が必要) を追加します。references/security-zone-automation.md を参照してください
  3. CLI/Terraform 経由で適用 — コンパートメントをループするか、Terraform モジュールを使用します
  4. ドリフトを毎晩検出oci cloud-guard security-zone list-problems; PROBLEM 状態でアラートを発します
  5. ロールバック手順 — CISO の承認を得たゾーンのみを削除します。すべてのゾーンが削除された後にのみレシピを削除します

完全なスクリプトは references/security-zone-automation.md にあります。Security Zo の一括処理には必須として扱ってください

(原文がここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

OCI Landing Zones - Expert Architecture

NEVER Do This

NEVER create a flat compartment structure

BAD:
tenancy/ app1-dev, app1-test, app1-prod, app2-dev ...

Problems:
- Cannot apply a single policy to all dev environments
- Cannot delegate administration per team
- Cost reports are unstructured
- Policy duplication grows O(n) with team count

GOOD - hierarchical:
tenancy/
  Network/ (Hub, Spokes)
  Security/ (Vault, Logging)
  Workloads/
    App1/ (Dev, Test, Prod)
    App2/ (Dev, Test, Prod)
  Shared-Services/ (Identity, Monitoring)

Policy inheritance flows DOWN the tree. One policy at Workloads/ applies to all workloads.

NEVER reuse 10.0.0.0/16 across VCNs

BAD - same CIDR everywhere:
Dev VCN:  10.0.0.0/16
Test VCN: 10.0.0.0/16   # Cannot peer with Dev
Prod VCN: 10.0.0.0/16   # Cannot peer with either

VCN CIDR is IMMUTABLE. Wrong CIDR = complete rebuild + downtime.

GOOD - non-overlapping allocation:
Hub VCN:  10.0.0.0/16
Dev VCN:  10.10.0.0/16
Test VCN: 10.20.0.0/16
Prod VCN: 10.30.0.0/16

NEVER skip Security Zones for production compartments

# BAD: Compartment with no guardrails
oci iam compartment create --compartment-id $PARENT --name "Prod"
# Result: Anyone can create public IPs, unencrypted buckets, etc.

# GOOD: Security Zone enforces policies BEFORE resource creation
oci cloud-guard security-zone-recipe create \
  --compartment-id $TENANCY_ID \
  --display-name "CIS-Prod-Recipe" \
  --security-policies '["deny-public-ip","deny-public-bucket"]'

oci cloud-guard security-zone create \
  --compartment-id $PROD_COMPARTMENT_ID \
  --display-name "Prod-Security-Zone" \
  --security-zone-recipe-id $RECIPE_ID

Security Zones prevent violations BEFORE resource creation. Auditing finds them AFTER compromise.

NEVER put workload resources in the root compartment

Root compartment is for tenancy-wide IAM only (users, groups, policies).
Resources in root bypass governance, cannot be delegated, violate CIS OCI Foundations Benchmark.

Root should contain ONLY:
- Top-level child compartments
- Tenancy-wide IAM policies
Nothing else.

NEVER mix dev and prod resources in the same compartment

Developers with dev access can accidentally delete prod resources. Cannot set different backup policies, tagging strategies, or budget alerts per environment.

NEVER skip tagging strategy

# Without tags: "oci.compute.instance: $5,234/month" — which team? which project?
# Cannot chargeback, cannot identify waste.

# RIGHT: Create tag namespace with mandatory defaults
oci iam tag-namespace create --compartment-id $TENANCY_ID --name "Organization"
# Create: CostCenter, Environment, Owner tags
# Apply tag-defaults at compartment level (auto-applied to all resources)
oci iam tag-default create \
  --compartment-id $WORKLOAD_COMPARTMENT_ID \
  --tag-definition-id $COSTCENTER_TAG_ID \
  --value '${iam.principal.name}'

NEVER allow internet egress from spoke VCNs directly

BAD: Spoke subnet → Internet Gateway
- Data exfiltration undetectable
- Egress cost $3k-5k/month per spoke (unmetered)
- No DPI or egress filtering

GOOD - hub-spoke with centralized control:
Spoke → DRG → Hub VCN → Network Firewall → NAT Gateway → Internet
- Single egress point with firewall policies
- Complete visibility via VCN Flow Logs

NEVER use single-region for production workloads requiring SLA

Region outage = complete downtime. No automatic failover without DR.

Multi-region pattern:
Primary: us-ashburn-1 + DR: us-phoenix-1
- Autonomous Data Guard for database (near-zero RPO)
- Traffic Manager for DNS failover (RTO ~15 minutes)
- Object Storage cross-region replication
- Mirror compartment structure in DR region

Multi-Tenant IAM Decision Tree

Workloads single-tenant?
│
├─ YES → Environment-centric model
│        Compartments: Network, Shared-Services, Workloads/App/Dev-Test-Prod
│        IAM: Per-env groups (DevAdmins, ProdOps) scoped to env compartment
│
└─ NO (Multi-tenant SaaS)?
    │
    ├─ Strict tenant isolation required?
    │  ├─ YES → Tenant-per-compartment: Org/TenantA, Org/TenantB
    │  │        Dynamic Group per tenant VCN for instance principal auth
    │  │        Policy: `allow dynamic-group TenantA-VMs to manage all-resources
    │  │                  in compartment TenantA`
    │  └─ NO → Shared compartment + per-tenant tagging
    │           (faster setup, shared blast radius)
    │
    ├─ Multiple environments per tenant?
    │  └─ Nest: TenantA/Dev, TenantA/Test, TenantA/Prod
    │           Policies inherit down the tree automatically
    │
    └─ Centralized shared services?
         └─ Shared-Services compartment (Logging, Monitoring, Identity)
            Grant tenancy-level Ops group least-privileged read access

IAM policy template for multi-tenant:

Allow group TenantA-Admins to manage all-resources in compartment TenantA
Allow dynamic-group TenantA-VCN to manage virtual-network-family in compartment TenantA
Allow group Shared-Network to use virtual-network-family in compartment Shared-Services

Guardrails:

  • Never grant tenant-specific policies at root; scope to tenant compartment hierarchy
  • Require DRG route approval workflow before adding new tenants
  • Refer to iam-identity-management skill for fine-grained policy verb syntax

Security Zone Rollout Checklist

  1. Inventory compartments — export JSON filtered by tag Environment=Prod
  2. Create/update recipe — clone Oracle CIS recipe, append custom policies (no public LB, require CMEK). See references/security-zone-automation.md
  3. Apply via CLI/Terraform — loop compartments or use Terraform module
  4. Detect drift nightlyoci cloud-guard security-zone list-problems; alert on PROBLEM state
  5. Rollback procedure — only remove zones with CISO approval; delete recipe only after all zones removed

Full scripts in references/security-zone-automation.md. Treat as MANDATORY for bulk Security Zone changes.


Reference Files

Load references/landing-zone-patterns.md when:

  • Choosing compartment hierarchy pattern (workload-centric vs environment-centric vs tenant-centric)
  • Designing hub-spoke network topology with DRG
  • Setting up tagging strategy and cost allocation across compartments

Load references/landing-zone-cli.md when:

  • Creating compartment hierarchies via CLI
  • Configuring Security Zones and Cloud Guard in bulk
  • Setting up tag defaults and tag namespaces
  • Creating budgets with cost tracking

Load references/security-zone-automation.md when (MANDATORY for bulk changes):

  • Rolling out or updating Security Zone recipes across multiple compartments
  • Remediating drift (compartment lost Security Zone enforcement)
  • Writing Terraform automation for Cloud Guard recipes

Load references/oci-well-architected-framework.md when:

  • Starting a new landing zone design from scratch
  • Preparing architectural review or compliance audit
  • Comparing Core Landing Zone vs Operating Entities Landing Zone
  • Need official Oracle guidance on all five pillars (Security, Reliability, Performance, Cost, Operations)