[python] FastAPI의 보안 기능

FastAPI는 빠르고 현대적인 API를 만들기 위한 Python 웹 프레임워크로, 보안 기능을 내장하고 있어 안전한 웹 애플리케이션을 쉽게 구축할 수 있습니다. 이 문서에서는 FastAPI의 주요 보안 기능과 그 활용 방법에 대해 알아보겠습니다.

1. 사용자 인증과 권한 부여

FastAPI는 사용자를 인증하고 특정 작업에 대한 권한을 부여하는 기능을 내장하고 있습니다. OAuth2JWT와 같은 표준 기반의 사용자 인증 방식을 지원하며, 사용자의 역할에 따라 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는 강력한 보안 기능을 제공하여 웹 애플리케이션 개발 과정에서 발생할 수 있는 보안 문제를 사전에 방지할 수 있도록 도와줍니다.

참고 자료