ストーリー
佐藤CTOがプロジェクト概要を渡しました。
対象システム:社内開発プラットフォーム「DevHub」
システム概要
| 項目 | 内容 |
|---|---|
| ユーザー | 開発者150名、管理者10名、外部パートナー20名 |
| 勤務形態 | フルリモート70%、ハイブリッド30% |
| デバイス | 社用MacBook、一部BYOD |
| 現在のアクセス方式 | VPN(OpenVPN)経由で社内ネットワークに接続 |
主要コンポーネント
graph TD
Title["DevHub プラットフォーム"]
Title --- R1A["GitLab<br/>(ソースコード)"]
Title --- R1B["Jira<br/>(チケット管理)"]
Title --- R1C["Confluence<br/>(ドキュメント)"]
Title --- R2A["ArgoCD<br/>(デプロイ)"]
Title --- R2B["Grafana<br/>(監視)"]
Title --- R2C["SonarQube<br/>(コード品質)"]
Title --- R3A["Harbor<br/>(コンテナ)"]
Title --- R3B["Vault<br/>(シークレット)"]
Title --- R3C["AWS Console<br/>(クラウドリソース)"]
classDef title fill:#1a1a2e,stroke:#e94560,color:#fff
classDef dev fill:#0d6efd,stroke:#0a58ca,color:#fff
classDef ops fill:#198754,stroke:#146c43,color:#fff
classDef infra fill:#f5a623,stroke:#c47d10,color:#fff
class Title title
class R1A,R1B,R1C dev
class R2A,R2B,R2C ops
class R3A,R3B,R3C infra
現在の問題点
- VPN接続後は全社内リソースにアクセス可能(ラテラルムーブメントリスク)
- VPN切断時の作業中断が生産性を低下
- 外部パートナーにもVPNアカウントを発行する必要がある
- デバイスのセキュリティ状態を検証していない
Mission 1:アイデンティティ基盤の設計(15分)
ゼロトラストの核となるアイデンティティ管理基盤を設計してください。
要件
- IDプロバイダーの選定と統合計画
- MFAポリシーの設計(ユーザー種別ごと)
- SSOフローの設計(各アプリケーションとの連携)
- 条件付きアクセスポリシーの設計
解答例
IDプロバイダー設計
// 条件付きアクセスポリシーの設計
interface ConditionalAccessPolicy {
name: string;
conditions: {
userGroups: string[];
devicePlatforms?: string[];
locations?: string[];
riskLevel?: 'low' | 'medium' | 'high';
clientApp?: string[];
};
grantControls: {
mfaRequired: boolean;
compliantDeviceRequired: boolean;
approvedAppRequired: boolean;
sessionControls?: {
signInFrequency: string;
persistentBrowser: boolean;
};
};
targetResources: string[];
}
const policies: ConditionalAccessPolicy[] = [
{
name: '開発者 - 通常アクセス',
conditions: {
userGroups: ['developers'],
devicePlatforms: ['macOS', 'linux'],
riskLevel: 'low',
},
grantControls: {
mfaRequired: true,
compliantDeviceRequired: true,
approvedAppRequired: false,
sessionControls: {
signInFrequency: '12h',
persistentBrowser: false,
},
},
targetResources: ['gitlab', 'jira', 'confluence', 'grafana', 'sonarqube'],
},
{
name: '開発者 - 高権限アクセス',
conditions: {
userGroups: ['developers', 'sre-team'],
riskLevel: 'low',
},
grantControls: {
mfaRequired: true,
compliantDeviceRequired: true,
approvedAppRequired: true,
sessionControls: {
signInFrequency: '1h', // 高権限は1時間で再認証
persistentBrowser: false,
},
},
targetResources: ['argocd', 'harbor', 'vault', 'aws-console'],
},
{
name: '外部パートナー - 制限アクセス',
conditions: {
userGroups: ['external-partners'],
},
grantControls: {
mfaRequired: true,
compliantDeviceRequired: false, // BYOD許可
approvedAppRequired: true,
sessionControls: {
signInFrequency: '4h',
persistentBrowser: false,
},
},
targetResources: ['jira', 'confluence'], // 限定的なアクセスのみ
},
{
name: '高リスクサインイン - ブロック',
conditions: {
userGroups: ['all-users'],
riskLevel: 'high',
},
grantControls: {
mfaRequired: true,
compliantDeviceRequired: true,
approvedAppRequired: true,
},
targetResources: ['all'],
},
];
MFAポリシー
| ユーザー種別 | MFA方式 | 頻度 | バックアップ |
|---|---|---|---|
| 管理者 | FIDO2/WebAuthn(必須) | 毎回 | リカバリーコード |
| 開発者 | TOTP or FIDO2 | 12時間ごと | TOTP |
| 外部パートナー | TOTP(必須) | 4時間ごと | SMS(制限付き) |
Mission 2:ネットワークアーキテクチャの再設計(15分)
VPNベースのネットワークからゼロトラストネットワークへ移行する設計を行ってください。
要件
- VPN廃止計画のフェーズ設計
- Identity-Aware Proxyの導入設計
- マイクロセグメンテーションの適用
- 各アプリケーションのアクセス経路の再設計
解答例
ゼロトラストネットワーク構成
# Cloudflare Access / Google IAP 風のゼロトラストプロキシ設定
# 各アプリケーションへのアクセスルール
applications:
- name: GitLab
domain: gitlab.devhub.example.com
type: self-hosted
identity_providers:
- okta
policies:
- name: developer-access
decision: allow
include:
- group: developers
- group: sre-team
require:
- mfa: true
- device_posture:
os_version_min: "14.0" # macOS Sonoma以上
disk_encrypted: true
firewall_enabled: true
- name: ArgoCD
domain: argocd.devhub.example.com
type: self-hosted
policies:
- name: sre-only-access
decision: allow
include:
- group: sre-team
require:
- mfa: true
- device_posture:
os_version_min: "14.0"
disk_encrypted: true
screen_lock: true
- name: developer-readonly
decision: allow
include:
- group: developers
require:
- mfa: true
session_duration: 4h
- name: AWS Console
domain: aws.devhub.example.com
type: saml
policies:
- name: admin-access
decision: allow
include:
- group: platform-admins
require:
- mfa: true
- device_posture:
managed: true
disk_encrypted: true
session_duration: 1h
- name: Jira-Confluence
domain: "*.atlassian.devhub.example.com"
type: saml
policies:
- name: all-internal
decision: allow
include:
- group: all-employees
- group: external-partners
require:
- mfa: true
VPN廃止ロードマップ
| フェーズ | 期間 | 内容 |
|---|---|---|
| Phase 1 | 1-2ヶ月 | IAP導入、SSO統合、低リスクアプリから移行開始 |
| Phase 2 | 3-4ヶ月 | 全Webアプリをゼロトラスト化、デバイス信頼度評価導入 |
| Phase 3 | 5-6ヶ月 | SSH/RDP/DBアクセスのゼロトラスト化 |
| Phase 4 | 7ヶ月 | VPN完全廃止、監視・改善サイクル開始 |
Mission 3:データ保護の設計(15分)
DevHubプラットフォーム上のデータ保護戦略を設計してください。
要件
- データ分類ポリシーの策定
- 暗号化戦略(at rest / in transit)
- シークレット管理の設計
- **DLP(Data Loss Prevention)**ルール
解答例
データ分類ポリシー
interface DataClassification {
level: 'Restricted' | 'Confidential' | 'Internal' | 'Public';
examples: string[];
encryptionRequired: boolean;
accessControl: string;
retentionPeriod: string;
dlpRules: string[];
}
const classifications: DataClassification[] = [
{
level: 'Restricted',
examples: ['本番DBクレデンシャル', 'APIシークレット', 'SSH秘密鍵', '暗号化キー'],
encryptionRequired: true,
accessControl: 'Vault + 動的認証情報 + 監査ログ必須',
retentionPeriod: '使用後即時失効(リース管理)',
dlpRules: ['コードリポジトリへのコミット禁止', 'ログ出力禁止', 'コピー禁止'],
},
{
level: 'Confidential',
examples: ['ソースコード', '設計ドキュメント', '脆弱性レポート', '人事情報'],
encryptionRequired: true,
accessControl: 'RBAC + プロジェクトベースの認可',
retentionPeriod: 'プロジェクト終了後3年',
dlpRules: ['外部共有時は承認必須', '透かし付き印刷のみ'],
},
{
level: 'Internal',
examples: ['チケット情報', '議事録', '開発ガイドライン'],
encryptionRequired: false,
accessControl: '認証済みユーザー全員',
retentionPeriod: '5年',
dlpRules: ['外部共有禁止'],
},
{
level: 'Public',
examples: ['公開ドキュメント', 'OSSコード', 'ブログ記事'],
encryptionRequired: false,
accessControl: '制限なし',
retentionPeriod: '無期限',
dlpRules: ['機密情報の混入チェック'],
},
];
Vault シークレット管理設計
# Vault設定例
vault:
auth_methods:
- type: kubernetes
config:
kubernetes_host: "https://kubernetes.default.svc"
- type: oidc
config:
oidc_discovery_url: "https://okta.example.com"
default_role: developer
secret_engines:
# 動的データベース認証情報
- path: database/
type: database
roles:
- name: readonly
db_name: production
creation_statements: "CREATE ROLE '{{name}}' WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO '{{name}}';"
default_ttl: 1h
max_ttl: 24h
# Transit暗号化エンジン
- path: transit/
type: transit
keys:
- name: pii-encryption
type: aes256-gcm96
auto_rotate_period: 30d
# KV シークレット
- path: secret/
type: kv-v2
config:
max_versions: 10
policies:
developer:
- path: "secret/data/dev/*"
capabilities: ["read", "list"]
- path: "database/creds/readonly"
capabilities: ["read"]
sre:
- path: "secret/data/*"
capabilities: ["create", "read", "update", "delete", "list"]
- path: "database/creds/*"
capabilities: ["read"]
- path: "transit/encrypt/pii-encryption"
capabilities: ["update"]
Mission 4:ゼロトラスト全体設計の統合(15分)
Mission 1-3の設計を統合し、DevHubプラットフォームのゼロトラストアーキテクチャ全体図を作成してください。
要件
- 全体アーキテクチャ図の作成
- 移行ロードマップ(6ヶ月計画)
- **成功指標(KPI)**の定義
- リスクと緩和策
解答例
全体アーキテクチャ
graph TD
User["ユーザー(任意の場所)<br/>社用Mac / BYOD / モバイル"]
subgraph ControlPlane["ゼロトラスト制御プレーン"]
IdP["IdP<br/>(Okta)"]
DeviceTrust["Device Trust<br/>(Jamf)"]
PolicyEngine["Policy Engine"]
end
User --> ControlPlane
ControlPlane --> IAP["Identity-Aware Proxy<br/>(Cloudflare Access)"]
IAP --> GitLab["GitLab"]
IAP --> Jira["Jira"]
IAP --> ArgoCD["ArgoCD"]
IAP --> Grafana["Grafana"]
IAP --> AWS["AWS"]
classDef user fill:#6c757d,stroke:#495057,color:#fff
classDef control fill:#e94560,stroke:#c23050,color:#fff
classDef proxy fill:#0d6efd,stroke:#0a58ca,color:#fff
classDef app fill:#198754,stroke:#146c43,color:#fff
class User user
class IdP,DeviceTrust,PolicyEngine control
class IAP proxy
class GitLab,Jira,ArgoCD,Grafana,AWS app
KPI
| 指標 | 現状 | 目標(6ヶ月後) |
|---|---|---|
| VPN依存度 | 100% | 0% |
| MFA有効率 | 40% | 100% |
| デバイスコンプライアンス率 | 未計測 | 95% |
| 平均認証遅延 | N/A | < 200ms |
| セキュリティインシデント | 月2件 | 月0.5件以下 |
| 不正アクセス検知時間 | 48時間 | 30分以内 |
評価基準
| 評価項目 | 配点 | 合格ライン |
|---|---|---|
| アイデンティティ基盤設計 | 25% | 条件付きアクセスポリシーが実用的 |
| ネットワーク再設計 | 25% | VPN廃止の段階的計画が現実的 |
| データ保護設計 | 25% | データ分類とシークレット管理が適切 |
| 統合設計の完成度 | 25% | 全体の整合性とKPIが明確 |
推定読了時間: 60分