diff --git a/docs-site/static/presentation/awsops-intro/02-architecture.html b/docs-site/static/presentation/awsops-intro/02-architecture.html index 31ca7075..6b0769ca 100644 --- a/docs-site/static/presentation/awsops-intro/02-architecture.html +++ b/docs-site/static/presentation/awsops-intro/02-architecture.html @@ -265,7 +265,7 @@

Chat UX

잡 종류 (2026-06-18 이후 증가)

- +

@@ -305,7 +305,7 @@

Read-Only Query

-

Multi-Account — STS AssumeRole Fan-Out (ADR-011)

+

Multi-Account — STS AssumeRole Fan-Out

@@ -313,7 +313,7 @@

Registry + Assume

  • Aurora accounts 레지스트리 — 호스트 계정은 lazy seed
  • 대상 계정 AWSopsReadOnlyRole을 host task role이 STS AssumeRole
  • ExternalId — 1st-party(trust policy가 task-role ARN 핀) = 선택, 3rd-party/와일드카드 = 필수(confused-deputy 방어)
  • 글로벌 셀렉터: 단일 계정 스코프 / __all__ = 전 계정 fan-out

Safety

-
  • host self-assume 가드 — target == host면 get_role_arn()이 None 반환 → host 실행 role 직접 사용(v1 전용 role을 host에서 self-assume → AccessDenied 오진 방지)
  • read-only 한정 — 대상 계정 변경 작업 없음(ADR-005 동결과 정합)
  • /accounts admin UI + CFN으로 대상 계정에 read-only role 배포(코드 변경 없음)
+
  • host self-assume 가드 — target == host면 get_role_arn()이 None 반환 → host 실행 role 직접 사용(v1 전용 role을 host에서 self-assume → AccessDenied 오진 방지)
  • read-only 한정 — 대상 계정 변경 작업 없음
  • /accounts admin UI + CFN으로 대상 계정에 read-only role 배포(코드 변경 없음)
@@ -326,7 +326,7 @@

Safety

Cognito + Lambda@Edge

-

Login (ADR-002)

+

Login

🔒 Private Edge
공개 ALB 없음 — 진입점은 CloudFront 하나
🔑 ECS Secrets
execution role 권한 (task role 아님)
👤 Admin
SSM + Cognito group (fail-closed)

@@ -371,16 +371,16 @@

Login (ADR-002)

🔒
동결 (do-not-enable)
-
ADR-005 (029/036/031P4 통합, 2026-06-11 reversal)
AWS-리소스 변경 + 자율 — 새 명시적 결정 전까지 동결(영구 아님)
+
AWS-리소스 변경 + 자율 — 새 명시적 결정 전까지 동결(영구 아님)
📥
-
거버넌스된 External (ADR-007)
+
거버넌스된 External
외부 DATA read + 기록/티켓/메시지 write 허용
SSRF · Secrets · DLP · human-gate 하
- 예외 1건 — ADR-015 (2026-07-01 owner-override): 호스트 자기 web 서비스의 ecs:UpdateService force-new-deployment(재시작)만, Aurora secret 회전 이벤트 트리거 한정, IAM 1 ARN, secret-id fail-closed, default-off. 나머지 ADR-005 전부는 그대로 동결. + 예외 1건: 호스트 자기 web 서비스의 ecs:UpdateService force-new-deployment(재시작)만, Aurora secret 회전 이벤트 트리거 한정, IAM 1 ARN, secret-id fail-closed, default-off. 나머지는 전부 그대로 동결.
🧠 @@ -394,7 +394,7 @@

Login (ADR-002)

Key Takeaways — Architecture

-
  • Terraform MSA on private edge — CloudFront VPC Origin → 내부 ALB → Fargate, 공개 ALB 없음
  • Aurora 영속 상태 — PostgreSQL 17.9 (Steampipe = flag-gated 인벤토리 sync일 뿐)
  • AgentCore 섹션 에이전트 — 9 게이트웨이 · ~160 read-only 도구(30슬라이스 전부 LIVE)로 라이브 AWS 읽기
  • ADR-003 하이브리드 라우팅 + ADR-011 멀티 계정 — regex + Haiku 분류기 + caching, STS AssumeRole fan-out
  • OOM-safe 비동기 워커 티어 — SQS + SFN + Lambda/Fargate, 진단·스케줄·알림·컴플라이언스 처리
  • 읽기 전용 동결 태세 — AWS 변경·자율 동결(ADR-005, 새 결정 전까지) + ADR-015 예외 1건, in-account Bedrock
+
  • Terraform MSA on private edge — CloudFront VPC Origin → 내부 ALB → Fargate, 공개 ALB 없음
  • Aurora 영속 상태 — PostgreSQL 17.9 (Steampipe = flag-gated 인벤토리 sync일 뿐)
  • AgentCore 섹션 에이전트 — 9 게이트웨이 · ~160 read-only 도구(30슬라이스 전부 LIVE)로 라이브 AWS 읽기
  • 하이브리드 라우팅 + 멀티 계정 — regex + Haiku 분류기 + caching, STS AssumeRole fan-out
  • OOM-safe 비동기 워커 티어 — SQS + SFN + Lambda/Fargate, 진단·스케줄·알림·컴플라이언스 처리
  • 읽기 전용 동결 태세 — AWS 변경·자율 동결 + 예외 1건, in-account Bedrock
@@ -428,15 +428,15 @@

🔒
동결 (do-not-enable)
-
ADR-005 (029/036/031P4 통합, 2026-06-11 reversal)
AWS-리소스 변경 + 자율 — 새 명시적 결정 전까지 동결(영구 아님)
+
AWS-리소스 변경 + 자율 — 새 명시적 결정 전까지 동결(영구 아님)

📥
-
거버넌스된 External (ADR-007)
+
거버넌스된 External
외부 DATA read + 기록/티켓/메시지 write 허용
SSRF · Secrets · DLP · human-gate 하
- 예외 1건 — ADR-015 (2026-07-01 owner-override): 호스트 자기 web 서비스의 ecs:UpdateService force-new-deployment(재시작)만, Aurora secret 회전 이벤트 트리거 한정, IAM 1 ARN, secret-id fail-closed, default-off. 나머지 ADR-005 전부는 그대로 동결. + 예외 1건: 호스트 자기 web 서비스의 ecs:UpdateService force-new-deployment(재시작)만, Aurora secret 회전 이벤트 트리거 한정, IAM 1 ARN, secret-id fail-closed, default-off. 나머지는 전부 그대로 동결.
🧠 @@ -781,10 +781,10 @@ AgentCore와 워커는 각각의 flag로 apply한 뒤 `make agentcore`, `make wo :::notes {timing: 3min} 이 아키텍처의 태세를 정확히 정의하겠습니다. -AWSops는 읽기 전용 AWS 운영 대시보드에 AI 진단을 더한 것입니다. ADR-005(옛 029/036/031 Phase4를 통합, 2026년 6월 11일 reversal 합의)에 따라 AWS 리소스 변경과 자율 실행은 동결입니다. 다만 여기서 정확히 말씀드릴 게 있는데, 이건 "영구 금지"가 아닙니다. BASELINE 문서가 그 표현을 명시적으로 거부합니다. 정확히는 "안전조건 충족 + 새로운 명시적 결정 전까지" 동결이고, 완화하려면 새 ADR과 멀티-AI 패널, 날짜가 박힌 owner override가 필요합니다. do-not-enable, 그냥 조용히 다시 켜지 않는다는 뜻입니다. +AWSops는 읽기 전용 AWS 운영 대시보드에 AI 진단을 더한 것입니다. AWS 리소스 변경과 자율 실행은 동결입니다. 영구 금지는 아니지만, 해제하려면 새 결정 문서와 멀티 AI 패널 검토, 날짜가 기록된 소유자 승인이 모두 필요합니다. do-not-enable, 그냥 조용히 다시 켜지 않는다는 뜻입니다. {cue: pause} -딱 하나 예외가 있습니다. ADR-015인데, 2026년 7월 1일에 오준석님이 owner-override로 승인했습니다. 호스트 자기 web 서비스를 Aurora secret 회전 이벤트에 맞춰 force-new-deployment로 재시작하는 것, 그거 하나만 허용됩니다. IAM은 서비스 1개 ARN으로 스코프되고, secret id가 안 맞으면 fail-closed로 아예 안 돕니다. 기본값은 off입니다. 나머지 ADR-005는 전부 그대로 동결입니다. -다만 외부 데이터에 대해서는 다릅니다. ADR-007이 이걸 다루는데, 외부 관측성 데이터 읽기, 그리고 외부 기록·티켓·메시지 write는 거버넌스 하에 허용됩니다. SSRF 방어, Secrets 관리, DLP와 redaction, human-gate를 모두 거칩니다. 즉 AWS 리소스는 안 건드리지만, 외부 시스템에 리포트를 보내거나 티켓을 끊는 건 통제된 형태로 가능합니다. +딱 하나 예외가 있습니다. 호스트 자기 web 서비스를 Aurora secret 회전 이벤트에 맞춰 force-new-deployment로 재시작하는 것, 그거 하나만 허용됩니다. IAM은 서비스 1개 ARN으로 스코프되고, secret id가 안 맞으면 fail-closed로 아예 안 돕니다. 기본값은 off입니다. 나머지는 전부 그대로 동결입니다. +다만 외부 데이터에 대해서는 다릅니다. 외부 관측성 데이터 읽기, 그리고 외부 기록·티켓·메시지 write는 거버넌스 하에 허용됩니다. SSRF 방어, Secrets 관리, DLP와 redaction, human-gate를 모두 거칩니다. 즉 AWS 리소스는 안 건드리지만, 외부 시스템에 리포트를 보내거나 티켓을 끊는 건 통제된 형태로 가능합니다. 그리고 핵심 차별점, AI 추론은 고객 계정 안 Bedrock에서 돌립니다. 외부 AI SaaS API가 없으므로 운영 데이터가 계정 밖으로 나가지 않습니다. {cue: transition} 전체를 한 장으로 정리하겠습니다. @@ -802,16 +802,16 @@ AWSops는 읽기 전용 AWS 운영 대시보드에 AI 진단을 더한 것입니 - **Terraform MSA on private edge** — CloudFront VPC Origin → 내부 ALB → Fargate, 공개 ALB 없음 - **Aurora 영속 상태** — PostgreSQL 17.9 (Steampipe = flag-gated 인벤토리 sync일 뿐) - **AgentCore 섹션 에이전트** — 9 게이트웨이 · ~160 read-only 도구(30슬라이스 전부 LIVE)로 라이브 AWS 읽기 -- **ADR-003 하이브리드 라우팅 + ADR-011 멀티 계정** — regex + Haiku 분류기 + caching, STS AssumeRole fan-out +- **하이브리드 라우팅 + 멀티 계정** — regex + Haiku 분류기 + caching, STS AssumeRole fan-out - **OOM-safe 비동기 워커 티어** — SQS + SFN + Lambda/Fargate, 진단·스케줄·알림·컴플라이언스 처리 -- **읽기 전용 동결 태세** — AWS 변경·자율 동결(ADR-005, 새 결정 전까지) + ADR-015 예외 1건, in-account Bedrock +- **읽기 전용 동결 태세** — AWS 변경·자율 동결 + 예외 1건, in-account Bedrock :::notes {timing: 2min} 아키텍처 파트를 한 장으로 정리합니다. 첫째, 비공개 엣지 위의 Terraform MSA입니다. CloudFront VPC Origin에서 내부 ALB를 거쳐 Fargate로 가고, 공개 ALB는 없습니다. 둘째, 영속 상태는 Aurora PostgreSQL 17.9입니다. Steampipe는 라이브 엔진이 아니라 flag로 켜는 인벤토리 sync일 뿐입니다. {cue: pause} -셋째, 라이브 AWS 읽기는 AgentCore 섹션 에이전트가, 9개 게이트웨이에 약 160개 읽기 전용 도구로 처리합니다. 30개 슬라이스 전부 LIVE입니다. 넷째, 라우팅은 ADR-003 하이브리드고 ADR-011 멀티 계정 STS AssumeRole로 여러 계정을 fan-out 조회합니다. 다섯째, 무거운 작업은 OOM에 안전한 비동기 워커 티어가 받는데, 진단 리포트뿐 아니라 스케줄, 알림 다이제스트, 컴플라이언스 잡까지 늘었습니다. 여섯째, 그 위에 읽기 전용 동결 태세가 있는데 영구 금지는 아니고 ADR-015라는 좁은 예외 1건이 있습니다. 그리고 in-account Bedrock입니다. +셋째, 라이브 AWS 읽기는 AgentCore 섹션 에이전트가, 9개 게이트웨이에 약 160개 읽기 전용 도구로 처리합니다. 30개 슬라이스 전부 LIVE입니다. 넷째, 라우팅은 하이브리드고 멀티 계정 STS AssumeRole로 여러 계정을 fan-out 조회합니다. 다섯째, 무거운 작업은 OOM에 안전한 비동기 워커 티어가 받는데, 진단 리포트뿐 아니라 스케줄, 알림 다이제스트, 컴플라이언스 잡까지 늘었습니다. 여섯째, 그 위에 읽기 전용 동결 태세가 있는데 영구 금지는 아니고 좁은 예외 1건이 있습니다. 그리고 in-account Bedrock입니다. {cue: transition} 세 번째 파트, 실제 데모와 진단 리포트로 이어가겠습니다. ::: diff --git a/docs-site/static/presentation/awsops-intro/index.html b/docs-site/static/presentation/awsops-intro/index.html index c9518e3c..b41b6d6f 100644 --- a/docs-site/static/presentation/awsops-intro/index.html +++ b/docs-site/static/presentation/awsops-intro/index.html @@ -564,7 +564,7 @@

Chat UX

잡 종류 (2026-06-18 이후 증가)

-
  • schedule_dispatcher — 시간별 EventBridge → report_schedules 스캔 → 진단 잡 enqueue (diagnosis_schedule_enabled, LIVE)
  • diagnosis_digest (workers.tf) — 리포트별 이메일 대신 배치 SNS 다이제스트 (workers_enabled && diagnosis_notify_enabled 게이트로 이미 배포됨; ADR-13이 명시적으로 승인한 건 스케줄 진단 요약뿐이라 수동 실행분까지 배치하는 현재 구현은 ADR 범위를 넘어섬 — 후속 ADR 정리 필요)
  • compliance (Powerpipe) — CIS 벤치마크 Fargate 잡 (steampipe_enabled)
+
  • schedule_dispatcher — 시간별 EventBridge → report_schedules 스캔 → 진단 잡 enqueue (diagnosis_schedule_enabled, LIVE)
  • diagnosis_digest (workers.tf) — 리포트별 이메일 대신 배치 SNS 다이제스트 (workers_enabled && diagnosis_notify_enabled 게이트로 이미 배포됨; 승인된 범위는 스케줄 진단 요약뿐이지만 현재 구현은 수동 실행분까지 함께 묶음 — 후속 정리 필요)
  • compliance (Powerpipe) — CIS 벤치마크 Fargate 잡 (steampipe_enabled)

@@ -604,7 +604,7 @@

Read-Only Query

-

Multi-Account — STS AssumeRole Fan-Out (ADR-011)

+

Multi-Account — STS AssumeRole Fan-Out

@@ -612,7 +612,7 @@

Registry + Assume

  • Aurora accounts 레지스트리 — 호스트 계정은 lazy seed
  • 대상 계정 AWSopsReadOnlyRole을 host task role이 STS AssumeRole
  • ExternalId — 1st-party(trust policy가 task-role ARN 핀) = 선택, 3rd-party/와일드카드 = 필수(confused-deputy 방어)
  • 글로벌 셀렉터: 단일 계정 스코프 / __all__ = 전 계정 fan-out

Safety

-
  • host self-assume 가드 — target == host면 get_role_arn()이 None 반환 → host 실행 role 직접 사용(v1 전용 role을 host에서 self-assume → AccessDenied 오진 방지)
  • read-only 한정 — 대상 계정 변경 작업 없음(ADR-005 동결과 정합)
  • /accounts admin UI + CFN으로 대상 계정에 read-only role 배포(코드 변경 없음)
+
  • host self-assume 가드 — target == host면 get_role_arn()이 None 반환 → host 실행 role 직접 사용(v1 전용 role을 host에서 self-assume → AccessDenied 오진 방지)
  • read-only 한정 — 대상 계정 변경 작업 없음
  • /accounts admin UI + CFN으로 대상 계정에 read-only role 배포(코드 변경 없음)
@@ -625,7 +625,7 @@

Safety

Cognito + Lambda@Edge

  • us-east-1, py3.12, viewer-request
  • RS256 JWKS 서명 검증 (iss/aud/token_use)
  • OAuth state + PKCE public client
-

Login (ADR-002)

+

Login

  • Primary = 자체 /login 폼
  • BFF POST /api/auth/login → 무서명 공개 InitiateAuth(USER_PASSWORD_AUTH) → awsops_token (id_token 12h)
  • Hosted UI PKCE = dark fallback, signout = 쿠키 삭제

🔒 Private Edge
공개 ALB 없음 — 진입점은 CloudFront 하나
🔑 ECS Secrets
execution role 권한 (task role 아님)
👤 Admin
SSM + Cognito group (fail-closed)

@@ -670,16 +670,16 @@

Login (ADR-002)

🔒
동결 (do-not-enable)
-
ADR-005 (029/036/031P4 통합, 2026-06-11 reversal)
AWS-리소스 변경 + 자율 — 새 명시적 결정 전까지 동결(영구 아님)
+
AWS-리소스 변경 + 자율 — 새 명시적 결정 전까지 동결(영구 아님)
📥
-
거버넌스된 External (ADR-007)
+
거버넌스된 External
외부 DATA read + 기록/티켓/메시지 write 허용
SSRF · Secrets · DLP · human-gate 하
- 예외 1건 — ADR-015 (2026-07-01 owner-override): 호스트 자기 web 서비스의 ecs:UpdateService force-new-deployment(재시작)만, Aurora secret 회전 이벤트 트리거 한정, IAM 1 ARN, secret-id fail-closed, default-off. 나머지 ADR-005 전부는 그대로 동결. + 예외 1건: 호스트 자기 web 서비스의 ecs:UpdateService force-new-deployment(재시작)만, Aurora secret 회전 이벤트 트리거 한정, IAM 1 ARN, secret-id fail-closed, default-off. 나머지는 전부 그대로 동결.
🧠 @@ -693,7 +693,7 @@

Login (ADR-002)

Key Takeaways — Architecture

-
  • Terraform MSA on private edge — CloudFront VPC Origin → 내부 ALB → Fargate, 공개 ALB 없음
  • Aurora 영속 상태 — PostgreSQL 17.9 (Steampipe = flag-gated 인벤토리 sync일 뿐)
  • AgentCore 섹션 에이전트 — 9 게이트웨이 · ~160 read-only 도구(30슬라이스 전부 LIVE)로 라이브 AWS 읽기
  • ADR-003 하이브리드 라우팅 + ADR-011 멀티 계정 — regex + Haiku 분류기 + caching, STS AssumeRole fan-out
  • OOM-safe 비동기 워커 티어 — SQS + SFN + Lambda/Fargate, 진단·스케줄·알림·컴플라이언스 처리
  • 읽기 전용 동결 태세 — AWS 변경·자율 동결(ADR-005, 새 결정 전까지) + ADR-015 예외 1건, in-account Bedrock
+
  • Terraform MSA on private edge — CloudFront VPC Origin → 내부 ALB → Fargate, 공개 ALB 없음
  • Aurora 영속 상태 — PostgreSQL 17.9 (Steampipe = flag-gated 인벤토리 sync일 뿐)
  • AgentCore 섹션 에이전트 — 9 게이트웨이 · ~160 read-only 도구(30슬라이스 전부 LIVE)로 라이브 AWS 읽기
  • 하이브리드 라우팅 + 멀티 계정 — regex + Haiku 분류기 + caching, STS AssumeRole fan-out
  • OOM-safe 비동기 워커 티어 — SQS + SFN + Lambda/Fargate, 진단·스케줄·알림·컴플라이언스 처리
  • 읽기 전용 동결 태세 — AWS 변경·자율 동결 + 예외 1건, in-account Bedrock
@@ -1523,15 +1523,15 @@