개발/Azure
[Azure] Azure내 스토리지 구현 및 관리 - 보안 구성
웅이의 개발이야기
2025. 5. 13. 22:57
728x90
반응형
Azure Storage 보안 전략
- 휴지 상태의 암호화 : 256비트 AES(Advanced Encryption Standard) 암호를 사용하는 SSE(스토리지 서비스 암호화)는 Azure Storage에 기록된 모든 데이터를 암호화합니다. -> Azure Storage가 암호를 해독한 후에 데이터 반환 (비활성화 불가)
- 인증 : Microsoft Entra ID 및 RBAC(역할 기반 액세스 제어)는 리소스 관리 작업 및 데이터 작업 모두에 대한 Azure Storage에 지원됩니다.
- 전송 중 암호화 : Azure와 클라이언트 간에 전송 수준 보안을 사용하도록 설정하여 데이터를 안전하게 유지 -> 항상 HTTPS 사용
- 디스크 암호화(DB외 케이스인 듯) : VM(가상 머신)의 경우 Azure를 사용하면 Azure Disk Encryption을 사용하여 VHD(가상 하드 디스크)를 암호화할 수 있습니다.
- 공유 액세스 서명(?) : SAS(공유 액세스 서명)를 사용하여 Azure Storage의 데이터 개체에 대해 액세스 권한(?)을 부여
- 권한 부여 : Blob Storage, Azure Files, Queue Storage 또는 Azure Cosmos DB(Azure Table Storage)의 보안 리소스에 대해 수행한 모든 요청에는 권한이 부여되어야 합니다.
- 권한부여 전략
- Microsoft Entra ID : 역할 기반 액세스 제어
- 공유 키 : Azure Storage 계정 액세스 키와 기타 매개 변수를 사용 (요청 시 헤더에 실음)
- 공유 액세스 서명(SAS)(?) : SAS는 지정된 사용 권한을 사용하고 지정된 시간 간격으로 Azure Storage 계정의 특정 리소스에 대한 액세스 권한을 위임
- 컨테이너 및 Blob에 대한 익명 액세스 : 필요에 따라 컨테이너 또는 Blob 수준에서 Blob 리소스를 public으로 설정
공유 액세스 서명 (SAS)
- SAS(공유 액세스 서명) : Azure Storage 리소스에 대한 제한된 액세스 권한을 부여하는 URI(Uniform Resource Identifier)
- 스토리지 계정 키에 대한 액세스 권한이 없는 클라이언트에 SAS를 제공 -> 클라이언트에 SAS URI를 배포하여 지정된 기간 동안 리소스에 액세스하도록 할 수 있음
클라이언트 인증 -> SAS 생성 -> 클라이언트에 부여 -> 스토리지 계정 리소스에 접근 (SAS는 클라이언트 권한과 액세스 간격을 정의)
SAS 특성
- 클라이언트에 부여한 액세스 유형을 세부적으로 제어 가능
- SAS는 Blob, 파일, 큐 및 테이블과 같은 여러 Azure Storage 서비스에 대한 액세스를 위임 가능
- SAS가 유효한 시간 간격을 지정 가능
- SAS에 의해 부여되는 권한을 지정
- SAS는 계정 수준 및 서비스 수준 컨트롤을 제공
- 계정 수준 : 서비스 수준보다 큰 범위, 서비스 수준 + 기타 리소스 및 능력에 대한 액세스 허용
- 서비스 수준 : 스토리지 계정의 특정 리소스에 대한 액세스를 허용
- SAS를 수락하는 선택적 IP 주소 또는 IP 주소 범위를 식별 가능
- SAS를 수락하는 프로토콜을 지정 가능
URI(Uniform Resource Identifier) : SAS(공유 액세스 서명)를 만들 때 매개 변수 및 토큰을 사용하여 URI를 만듭니다. (Azure Storage 리소스 URI + SAS 토큰)
URI 구성
Azure Storage 암호화
암호화 및 암호 해독 프로세스는 자동 수행 -> 데이터는 기본적으로 보호되므로 코드 또는 애플리케이션을 수정할 필요가 없음.
256비트 AES(고급 암호화 표준) 암호화를 통해 암호화
직접 키를 관리하거나 Microsoft에서 관리하는 키를 사용 가능
암호 key 활용
: Storage 계정 생성 -> 생성 계정에 대해 2개의 512비트 스토리지 계정 액세스 키 생성 -> 공유 키 권한 부여 or 공유 키로 서명된 SAS 토큰을 통해 데이터에 접근암호화 유형
- 인프라 암호화 : 데이터는 두 가지 암호화 알고리즘과 두 가지 키를 사용하여 서비스 수준에서 한 번, 인프라 수준에서 한 번씩 두 번 암호화
- 플랫폼 관리형 키 : Azure에서 완전히 생성, 저장 및 관리되는 암호화 키
- 고객 관리형 키 : 한 명 이상의 고객이 읽고, 만들고, 삭제하고, 업데이트하고, 관리하는 키
- Azure Key Vault
- 애플리케이션을 중단하지 않고 쉽게 키를 회전(갱신?)시켜 다시 생성 -> 키 관리 자동화
- Azure Key Vault API를 사용하여 암호화 키를 생성 (고객 관리형 키) -> 다시 생성하거나 기존 키 자격증명에서 선택하여 활용 가능
Best Practice
- encrypt data at rest and in-flight
- Always encrypt data at rest
- Always encrypt in-flight data
- Restrict access to database
- Enable database firewalls
- Use Azure Private Link
- Restrict access to VMS
- Disable VM RDP/SSH ports
- Connect to VMs with Azure Bastion
- Protect application secrets
- Store secrets in Azure Key Vault
- Use managed service identities
- Use a separate Azure Subscription for production
- Implement RBAC
- Use a separate subscription
- Implement a Web Application Firewall
- Implement Application Gateway or Front Door
- Enable Web Application Firewall
- Use Azure Security Center
- 보안 권장사항
반응형