[python] FastAPI의 보안 기능
FastAPI는 빠르고 현대적인 API를 만들기 위한 Python 웹 프레임워크로, 보안 기능을 내장하고 있어 안전한 웹 애플리케이션을 쉽게 구축할 수 있습니다. 이 문서에서는 FastAPI의 주요 보안 기능과 그 활용 방법에 대해 알아보겠습니다.
1. 사용자 인증과 권한 부여
FastAPI는 사용자를 인증하고 특정 작업에 대한 권한을 부여하는 기능을 내장하고 있습니다. OAuth2
및 JWT
와 같은 표준 기반의 사용자 인증 방식을 지원하며, 사용자의 역할에 따라 API 엔드포인트의 접근 권한을 관리할 수 있습니다.
from fastapi import Depends, FastAPI
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.post("/token")
async def login(form_data: OAuth2PasswordRequestForm = Depends()):
# 사용자 인증 및 토큰 생성 로직
return {"access_token": form_data.username, "token_type": "bearer"}
@app.get("/protected_resource")
async def protected_resource(token: str = Depends(oauth2_scheme)):
# 권한 확인 및 보호 리소스 접근 로직
return {"message": "You are authorized"}
2. CORS (Cross-Origin Resource Sharing) 설정
웹 애플리케이션에서 외부 도메인에서의 요청을 처리하기 위해 CORS를 설정해야 하는 경우가 있습니다. FastAPI는 이를 간단하게 설정할 수 있는 기능을 제공하고 있으며, add_middleware
메서드를 사용하여 CORS를 쉽게 활성화할 수 있습니다.
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
3. 보안 취약점 방지
FastAPI는 기본적으로 입력 데이터의 유효성을 검증하고, SQL Injection 및 Cross-Site Scripting 공격과 같은 보안 취약점을 방지합니다. 이를 통해 개발자는 안전한 웹 애플리케이션을 쉽게 구축할 수 있습니다.
이와 같이 FastAPI는 강력한 보안 기능을 제공하여 웹 애플리케이션 개발 과정에서 발생할 수 있는 보안 문제를 사전에 방지할 수 있도록 도와줍니다.
참고 자료
- FastAPI 공식 문서: https://fastapi.tiangolo.com
- Real Python, “Securing Your FastAPI Applications”: https://realpython.com/securing-your-fastapi-application/
- FastAPI GitHub 저장소: https://github.com/tiangolo/fastapi