135 lines
7.0 KiB
Plaintext
135 lines
7.0 KiB
Plaintext
# ============================================================
|
|
# .env.example → cp .env.example .env 후 값 채워서 사용
|
|
# 모든 run.sh / scripts 가 이 파일을 source 합니다.
|
|
# 절대 .env 자체를 git 에 올리지 마세요 (.gitignore 등록됨).
|
|
# ============================================================
|
|
|
|
# --- (1) 클라이언트 도구 경로 ---
|
|
# Oracle Instant Client (sqlplus) 가 PATH 에 있어야 함.
|
|
# macOS 예: /Users/<you>/devkit/instantclient
|
|
# Linux 예: /opt/oracle/instantclient_21_12
|
|
export PATH="${HOME}/devkit/instantclient:${PATH}"
|
|
|
|
# Oracle wallet 디렉토리 (cwallet.sso, tnsnames.ora 포함된 풀린 경로)
|
|
export TNS_ADMIN="" # 예: /Users/you/devkit/Wallet_D8AUKRO81636MON0
|
|
|
|
# --- (2) ADB 접속 ---
|
|
export ADB_TNS="" # tnsnames.ora alias (예: d8aukro81636mon0_tp)
|
|
export ADB_USER="admin"
|
|
export ADB_PASSWORD="" # 비워두면 run.sh 가 read -s 로 프롬프트
|
|
export BACKOFFICE_DB_URL="jdbc:oracle:thin:@${ADB_TNS}?TNS_ADMIN=${TNS_ADMIN}"
|
|
export BACKOFFICE_DB_USERNAME="${ADB_USER}"
|
|
export BACKOFFICE_DB_PASSWORD="${ADB_PASSWORD}"
|
|
# 편의: sqlplus 한 줄 connect 문자열 (자동 합성됨; 직접 안 건드려도 됨)
|
|
# export ADB_CONN="${ADB_USER}/${ADB_PASSWORD}@${ADB_TNS}"
|
|
|
|
# --- (2b) Spring Boot 백오피스 ---
|
|
export BACKOFFICE_ADMIN_USER="admin"
|
|
export BACKOFFICE_ADMIN_PASSWORD="admin"
|
|
# 운영에서는 최초 한 번 생성한 {bcrypt} 해시를 .env에 보관합니다. 이를 사용하면
|
|
# 지속 로그인 쿠키가 앱 재기동 후에도 유효합니다. 원문 비밀번호 값은 Git에 넣지 마세요.
|
|
export BACKOFFICE_ADMIN_PASSWORD_HASH=""
|
|
# 읽기 전용 조회 계정. 활성화하면 ROLE_VIEWER로 로그인 가능하며 POST/PUT/PATCH/DELETE는 차단됩니다.
|
|
export BACKOFFICE_GUEST_ENABLED="false"
|
|
export BACKOFFICE_GUEST_USER="guest"
|
|
export BACKOFFICE_GUEST_PASSWORD=""
|
|
export BACKOFFICE_GUEST_PASSWORD_HASH=""
|
|
# 로컬 HTTP 개발 기본값. 외부 VM 배포 스크립트는 loopback/HTTPS 안전값으로 덮어씁니다.
|
|
export BACKOFFICE_BIND_ADDRESS="0.0.0.0"
|
|
export BACKOFFICE_FORWARD_HEADERS_STRATEGY="none"
|
|
export BACKOFFICE_REQUIRE_HTTPS="false"
|
|
export BACKOFFICE_SESSION_COOKIE_SECURE="false"
|
|
# HTTPS에서만 사용. key는 배포 환경의 secret으로 32자 이상 임의값을 넣고 Git에 저장하지 않습니다.
|
|
export BACKOFFICE_REMEMBER_ME_ENABLED="false"
|
|
export BACKOFFICE_REMEMBER_ME_KEY=""
|
|
export BACKOFFICE_REMEMBER_ME_DAYS="14"
|
|
export BACKOFFICE_ORDS_BASE_URL="https://yh0olybn5pqce4n-d8aukro81636mon0.adb.ap-seoul-1.oraclecloudapps.com/ords"
|
|
export BACKOFFICE_ORDS_TIMEOUT_SECONDS="10"
|
|
# ORDS metadata 생성/수정 전용 계정. 비워두면 BACKOFFICE_DB_* 연결을 사용하므로
|
|
# ADMIN으로 실행 중이면 Handler 생성은 막히고 소스 보기만 사용합니다.
|
|
export BACKOFFICE_ORDS_DB_URL="${BACKOFFICE_DB_URL}"
|
|
export BACKOFFICE_ORDS_DB_USERNAME="CB_ORDS"
|
|
export BACKOFFICE_ORDS_DB_PASSWORD=""
|
|
|
|
# --- (2c) OpenAI 호환 AI 호출 (MCP-style Reasoning 탭) ---
|
|
export BACKOFFICE_AI_ENABLED="false"
|
|
export BACKOFFICE_AI_PROVIDER="openai" # openai | oci
|
|
export BACKOFFICE_AI_BASE_URL="" # 예: https://inference.generativeai.us-chicago-1.oci.oraclecloud.com
|
|
export BACKOFFICE_AI_MODEL="" # 예: openai.gpt-5.4-mini
|
|
export BACKOFFICE_AI_API_KEY=""
|
|
export BACKOFFICE_AI_TIMEOUT_SECONDS="30"
|
|
# provider=oci이면 API key를 환경 변수로 복제하지 않고 OCI config profile로 요청에
|
|
# 서명합니다. POC3_LLM_GPT55_OCI_*/OCI_GENAI_*가 있으면 아래 BACKOFFICE_* 값보다
|
|
# fallback으로 사용됩니다.
|
|
export BACKOFFICE_AI_OCI_CONFIG_FILE=""
|
|
export BACKOFFICE_AI_OCI_PROFILE="DEFAULT"
|
|
export BACKOFFICE_AI_OCI_REGION=""
|
|
export BACKOFFICE_AI_OCI_COMPARTMENT_ID=""
|
|
|
|
# 로컬 키 별칭은 .env에만 저장하세요. .env.example에는 원문 키를 넣지 않습니다.
|
|
export VPDTEST1_API_KEY=""
|
|
export VPDTEST2_API_KEY=""
|
|
|
|
# --- (3) 데모용 ADB 엔드유저 비밀번호 (sql/adb/07_end_users.sql 에서 사용) ---
|
|
# ADB 비번 정책: 12자 이상, 대/소/숫자/특수 조합.
|
|
# 4명의 데모 유저:
|
|
# vpduser_my → MySQL view 만 SELECT 가능
|
|
# vpduser_pg → Postgres view 만 SELECT 가능
|
|
# vpduser_both → 양쪽 view 모두 SELECT 가능
|
|
# vpduser_none → 양쪽 view 모두 fail-closed (0 rows)
|
|
export VPDUSER_MY_PASSWORD="RowFilter#My2026"
|
|
export VPDUSER_PG_PASSWORD="RowFilter#Pg2026"
|
|
export VPDUSER_BOTH_PASSWORD="RowFilter#Both26"
|
|
export VPDUSER_NONE_PASSWORD="RowFilter#None26"
|
|
|
|
# --- (3b) OPTIONAL — DDS 변형 데모용 엔드유저 비밀번호 ---
|
|
# sql/adb/13_dds_variant.sql (Oracle 26ai Deep Data Security 재구현) 에서만 사용.
|
|
# 동일한 4-user 매트릭스를 declarative Data Grants 로 재현. VPD 데모와 공존.
|
|
export DDSUSER_MY_PASSWORD="DdsGrant#My2026"
|
|
export DDSUSER_PG_PASSWORD="DdsGrant#Pg2026"
|
|
export DDSUSER_BOTH_PASSWORD="DdsGrant#Both26"
|
|
export DDSUSER_NONE_PASSWORD="DdsGrant#None26"
|
|
export DDSUSER_TOKEN_PASSWORD="DdsGrant#Token26"
|
|
|
|
# --- (3c) DDS MCP SSE · OCI IAM Confidential Application ---
|
|
# 실제 값은 .env 또는 배포 환경의 secret store에만 둔다.
|
|
export DDS_OCI_IAM_CLIENT_ID=""
|
|
export DDS_OCI_IAM_CLIENT_SECRET=""
|
|
export DDS_OCI_IAM_DOMAIN_URL="" # 예: https://idcs-<unique>.identity.oraclecloud.com
|
|
export DDS_OCI_IAM_DATABASE_SCOPE="" # OCI IAM의 DB resource scope
|
|
export DDS_OCI_IAM_TOKEN_URI="" # 비우면 ${DDS_OCI_IAM_DOMAIN_URL}/oauth2/v1/token
|
|
export DDS_OCI_IAM_TIMEOUT_SECONDS="10s"
|
|
export DDS_OCI_IAM_REFRESH_SKEW_SECONDS="60s"
|
|
export DDS_MCP_BASE_URL="http://127.0.0.1:8083"
|
|
export DDS_MCP_TEST_BEARER="" # 발급한 활성 CB_APP_USER Bearer만 로컬 테스트에 사용
|
|
|
|
# --- (4) 원격 Postgres (AWS RDS, Cloud SQL, ...) ---
|
|
# sql/source/postgres_setup.sql 가 여기로 customers 테이블/seed 생성.
|
|
# ADB 의 RDS_POSTGRES_LINK 가 이 인스턴스를 가리킴.
|
|
export PG_HOST="" # 예: vpd-poc.xxxxx.ap-northeast-2.rds.amazonaws.com
|
|
export PG_PORT="5432"
|
|
export PG_DB="vpdpoc" # CREATE DATABASE 미리 되어 있어야 함
|
|
export PG_USER="postgres"
|
|
export PG_PASSWORD=""
|
|
|
|
# --- (5) 원격 MySQL ---
|
|
export MY_HOST=""
|
|
export MY_PORT="3306"
|
|
export MY_DB="ecommerce_poc" # CREATE DATABASE 미리 되어 있어야 함
|
|
export MY_USER="admin"
|
|
export MY_PASSWORD=""
|
|
|
|
# --- (6) ADB → 원격 DB Link 이름 (관례적으로 고정 — 굳이 안 바꿔도 됨) ---
|
|
export DBLINK_PG_NAME="RDS_POSTGRES_LINK"
|
|
export DBLINK_MY_NAME="RDS_LINK"
|
|
|
|
# --- (7) Redmine (project tracker) ---
|
|
export REDMINE_URL=https://redmine.example.com
|
|
export REDMINE_API_KEY=<your-redmine-api-key>
|
|
|
|
# --- (8) Gitea (self-hosted git) ---
|
|
export GITEA_URL=https://gittea.example.com
|
|
export GITEA_USER=<your-gitea-login>
|
|
export GITEA_PASSWORD=<your-gitea-password>
|
|
export GITEA_TOKEN=<minted-from-the-above>
|