OpenAI API 활용

Streamlit - 민감한 데이터 관리 하기

최 수빈 2025. 1. 6. 03:49

 

Streamlit의 secrets

 

 

 

민감한 정보(API 키, 데이터베이스 자격증명 등)를 앱 내에서 안전하게 관리하기 위한 기능

코드에 직접 값을 하드코딩하지 않고, 민감한 데이터를 외부 파일에서 불러올 수 있음

 

 

 

 

Streamlit Cloud > App Settings > Secrets

 

Streamlit Cloud에서 배포하는 경우, Streamlit의 웹 인터페이스에서 Secrets설정

JSON 형식으로 민감한 정보를 추가

{
  "API_KEY": "your_api_key",
  "DB_USER": "your_db_user",
  "DB_PASS": "your_db_password"
}

 

 

앱 코드에서 st.secrets로 불러오기

import streamlit as st

api_key = st.secrets["API_KEY"]
db_user = st.secrets["DB_USER"]

 

 

 

 

.streamlit/secrets.toml 파일

 

 

 

로컬에서 Streamlit 앱을 개발할 때 .streamlit폴더 안에 secrets.toml 파일을 만들어 secrets 관리

 

 

.streamlit/secrets.toml파일 생성

[API]
API_KEY = "your_api_key"

[DATABASE]
DB_USER = "your_db_user"
DB_PASS = "your_db_password"

 

 

코드에서 st.secrets로 불러오기

import streamlit as st

api_key = st.secrets["API"]["API_KEY"]
db_user = st.secrets["DATABASE"]["DB_USER"]

 

 

Streamlit Cloud Secrets 배포된 앱의 민감한 정보를 관리 외부 사용자와 공유할 앱에서 안전하게 환경 변수를 설정할 수 있음
.streamlit/secrets.toml 로컬 개발 환경에서 민감한 정보 관리 개발 중 민감한 데이터를 안전하게 관리할 수 있음
.secrets.toml은 gitignore에 포함해 저장소에 노출되지 않도록 해야 함

 

 

 

import streamlit as st

# 기본값 설정
api_key = None

try:
    # 로컬 환경에서는 secrets.toml을 참조
    api_key = st.secrets["API_KEY"]
except KeyError:
    # 로컬 환경에서 secrets.toml이 없거나, 배포 환경에서는 App Settings에서 값 가져옴
    api_key = "default_value"  # 필요하면 기본값 설정

st.write(f"API Key: {api_key}")

 

로컬과 배포 환경에서 모두 호환되게 작성

 


# 주석은 #로 시작
title = "TOML Example"  # 문자열 값

[owner]  # 섹션 정의
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00Z  # 날짜 (ISO 8601 형식)

[database]
server = "192.168.1.1"
ports = [8001, 8001, 8002]  # 배열
connection_max = 5000
enabled = true  # 불리언 값
[API]
API_KEY = "your_api_key"

[DATABASE]
DB_USER = "your_db_user"
DB_PASS = "your_db_password"

TOML 파일 주요 문법, 예제