Skip to content

Commit 9c7bc6d

Browse files
committed
fix: README 수정
1 parent 6658020 commit 9c7bc6d

File tree

1 file changed

+16
-123
lines changed

1 file changed

+16
-123
lines changed

infra/README.md

Lines changed: 16 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ infra/
2323
## Infrastructure Diagrams
2424

2525
<details>
26-
<summary>🔧 개발 환경 구성도 (Development Mode)</summary>
26+
<summary> 환경 구성도 </summary>
2727

2828
> **주의**: 개발 목적으로 RDS 포트(5432)와 NPM 관리 포트(81)가 외부에 노출되어 있습니다.
2929
@@ -129,131 +129,16 @@ graph TB
129129
- RDS 외부 접근
130130
- `publicly_accessible = true`
131131

132-
</details>
133-
134-
<details>
135-
<summary>🔒 프로덕션 환경 구성도 (Production Mode)</summary>
136-
137-
> **보안**: 프로덕션 환경에서는 RDS와 NPM 관리 포트가 내부에서만 접근 가능합니다.
138-
139-
**프로덕션 권장 설정값:**
140-
- PORT
141-
- `expose_rds_port = false` 🔒
142-
- `expose_npm_config = false` 🔒
143-
- RDS 외부 접근
144-
- `publicly_accessible = false`
145-
146-
**접근 방법:**
147-
- RDS: EC2를 통한 터널링 또는 VPN
148-
- NPM 관리: EC2 SSH 터널링
149-
150-
```mermaid
151-
graph TB
152-
%% External
153-
Internet([Internet])
154-
User([사용자])
155-
156-
%% AWS Cloud boundary
157-
subgraph AWS["AWS Cloud"]
158-
%% VPC
159-
subgraph VPC["VPC (10.0.0.0/16)"]
160-
IGW[Internet Gateway]
161-
RT[Route Table]
162-
163-
%% Subnets in different AZs
164-
subgraph AZ1["AZ-a (EC2, RDS 배치)"]
165-
Subnet1["Public Subnet 1<br/>(10.0.0.0/24)"]
166-
EC2["EC2 Instance<br/>(t3.micro)<br/>Amazon Linux 2023<br/>Docker, Redis, NPM"]
167-
RDS["🔒 PostgreSQL RDS<br/>db.t3.micro Single-AZ<br/>PRIVATE ACCESS<br/>AZ-a 배치"]
168-
end
169-
170-
subgraph AZ2["AZ-b"]
171-
Subnet2["Public Subnet 2<br/>(10.0.1.0/24)"]
172-
end
173-
174-
subgraph AZ3["AZ-c"]
175-
Subnet3["Public Subnet 3<br/>(10.0.2.0/24)"]
176-
end
177-
178-
subgraph AZ4["AZ-d"]
179-
Subnet4["Public Subnet 4<br/>(10.0.3.0/24)"]
180-
end
181-
182-
%% Security Groups
183-
SG_MAIN["Main Security Group (sg_1)<br/>HTTP-80, HTTPS-443 항상 허용<br/>🔒 RDS-5432, NPM-81 차단<br/>EC2와 RDS 모두 적용"]
184-
SG_EC2_RDS[EC2-RDS 전용 Security Groups<br/>EC2 ↔ RDS 내부 통신<br/>Port 5432]
185-
186-
%% RDS Subnet Group
187-
RDS_SG[RDS Subnet Group<br/>Subnet1 + Subnet2]
188-
189-
%% IAM Role
190-
IAM_ROLE[IAM Role<br/>S3FullAccess<br/>SSM Access]
191-
end
192-
193-
%% S3 and CloudFront
194-
S3[S3 Bucket<br/>Static Files]
195-
CF[CloudFront<br/>CDN Distribution]
196-
OAI[Origin Access Identity]
197-
198-
%% EIP
199-
EIP[Elastic IP]
200-
end
201-
202-
%% Connections
203-
User --> Internet
204-
Internet --> CF
205-
Internet --> IGW
206-
IGW --> RT
207-
RT --> Subnet1
208-
RT --> Subnet2
209-
RT --> Subnet3
210-
RT --> Subnet4
211-
212-
EC2 --> EIP
213-
EIP --> Internet
214-
215-
EC2 --> SG_MAIN
216-
EC2 --> SG_EC2_RDS
217-
RDS --> SG_MAIN
218-
RDS --> SG_EC2_RDS
219-
RDS --> RDS_SG
220-
221-
CF --> OAI
222-
OAI --> S3
223-
224-
EC2 -.->|IAM Role| IAM_ROLE
225-
IAM_ROLE -.->|Access| S3
226-
EC2 -.->|Internal Connect| RDS
227-
228-
%% Styling
229-
classDef aws fill:#ff9900,stroke:#232f3e,stroke-width:2px,color:#fff
230-
classDef compute fill:#ff6b6b,stroke:#c92a2a,stroke-width:2px,color:#fff
231-
classDef storage fill:#4ecdc4,stroke:#2b8a3e,stroke-width:2px,color:#fff
232-
classDef network fill:#74c0fc,stroke:#1864ab,stroke-width:2px,color:#fff
233-
classDef database fill:#51cf66,stroke:#2b8a3e,stroke-width:2px,color:#fff
234-
classDef secure fill:#51cf66,stroke:#2b8a3e,stroke-width:3px,color:#fff
235-
236-
class AWS aws
237-
class EC2,EIP,IAM_ROLE compute
238-
class S3,CF storage
239-
class VPC,IGW,RT,Subnet1,Subnet2,Subnet3,Subnet4,SG_MAIN,SG_EC2_RDS network
240-
class RDS,RDS_SG secure
241-
```
242-
243132
**프로덕션 권장 설정값:**
244133
- `expose_rds_port = false` 🔒
245134
- `expose_npm_config = false` 🔒
246135
- `publicly_accessible = false` (RDS)
247136

248-
**접근 방법:**
249-
- RDS: EC2를 통한 터널링 또는 VPN
250-
- NPM 관리: EC2 SSH 터널링
251-
252137
</details>
253138

254139
## Variables Configuration
255140

256-
### terraform.tfvars 설정 가이드
141+
### - terraform.tfvars 설정 가이드
257142

258143
`terraform.tfvars.default` 파일을 복사하여 `terraform.tfvars` 파일을 생성한 후, 아래 변수들을 설정하세요.
259144

@@ -269,17 +154,22 @@ graph TB
269154
| `db_username` | 데이터베이스 사용자명 | `"db_user"` |
270155
| `nginx_admin_email` | Nginx Proxy Manager 관리자 이메일 | `"[email protected]"` |
271156

272-
#### 보안 토글 변수
273-
| 변수명 | 기본값 | 설명 |
274-
|--------|--------|------|
275-
| `expose_rds_port` | `true` | 🔓 개발용 / `false` 🔒 프로덕션용 |
276-
| `expose_npm_config` | `true` | 🔓 개발용 / `false` 🔒 프로덕션용 |
277-
278157
> ⚠️ **보안 주의사항**
279158
> * 해당 파일은 민감한 정보를 포함합니다
280159
> * 절대 Git 저장소에 커밋하지 마세요
281160
> * 외부로 유출되지 않도록 주의하세요
282161
162+
### - variables.tf 설정 가이드
163+
#### 보안 토글 변수
164+
| 변수명 | 기본값 | 설명 |
165+
|----------------------|---------|--------------------------|
166+
| `expose_rds_port` | `true` | RDS 포트를 외부에 개방합니다. |
167+
| `expose_npm_config` | `true` | NPM 포트를 외부에 개방합니다. |
168+
| `bucket_key_enabled` | `false` | false 시 기본 암호화가 적용됩니다. |
169+
| `is_s3_private` | `true` | 외부와 S3 간 상호작용 여부를 결정합니다. |
170+
| `enable_s3_acl` | `false` | S3 버킷 ACL 활성화 여부를 결정합니다. |
171+
172+
283173
## Usage
284174
#### 1. AWS 자격 증명 설정
285175
* AWS CLI를 통해 자격 증명을 설정합니다.
@@ -353,6 +243,9 @@ terraform apply -target=aws_instance.main
353243
* IAMFullAccess
354244
* VPCFullAccess
355245

246+
or
247+
* AdministratorAccess
248+
356249
</details>
357250

358251
<details>

0 commit comments

Comments
 (0)