Azure Table Storage는 구조화된 비관계형 데이터를 위한 NoSQL 키-값 저장소를 제공합니다. 테이블 보안은 다른 Azure Storage 데이터 서비스와 기본적인 원리를 공유하지만, Microsoft Entra ID 인증 표면과 Azure Cosmos DB for Table API와의 중복 등 몇 가지 구체적인 점이 있어 주목할 가치가 있습니다.
메모
이 글에서는 Azure Table Storage에 특화된 보안 관행을 다룹니다. 계정 수준의 보안 지침은 'Secure Your Azure Storage account.'를 참조하세요.
서비스별 보안
Azure Table Storage와 Azure Cosmos DB for Table API는 유사한 테이블 데이터 모델을 제공하지만, 보안 기능은 크게 다릅니다. 프로젝트 시작 시 보안 요구사항을 충족하는 플랫폼을 선택하세요. 이들 간의 데이터 이전은 간단하지 않습니다.
전용 처리량, 글로벌 배포, 또는 테이블별 세밀한 네트워크 격리가 필요할 때는 Azure Cosmos DB for Table을 사용하세요: Cosmos DB for Table API는 별도의 개인 엔드포인트, 방화벽, IAM 구성을 가진 별도의 리소스로, 어떤 스토리지 계정과도 무관합니다. 이렇게 하면 테이블 워크로드에 범용 스토리지 계정을 공유하는 워크로드와 다른 네트워크 또는 거버넌스 요구 사항이 있을 경우 영향 범위를 격리할 수 있습니다. 자세한 내용은 Introduction to Azure Cosmos DB for Table을 참조하세요.
블롭, 파일, 큐와 함께 계정 수준의 공동 위치가 필요할 때 Azure Table Storage를 사용하세요: 테이블 스토리지는 범용 스토리지 계정 내에 존재하므로, 네 가지 데이터 서비스 모두에 단일 네트워크 규칙, 프라이빗 엔드포인트, 신원 정책이 적용됩니다. Cosmos DB for Table은 독립적인 보안 구성을 가진 별도의 리소스입니다.
ID 및 액세스 관리
Microsoft Entra ID를 사용하여 테이블 데이터 작업을 승인하세요: Entra ID 인증은 애플리케이션 코드에서 계정 키가 필요 없게 하고 신원 기반 감사 추적을 제공합니다. 가능한 경우 테이블 범위에 내장된 스토리지 테이블 데이터 리더 또는 스토리지 테이블 데이터 기여자 역할을 할당하세요. 자세한 내용은 Microsoft Entra ID를 이용한 테이블 접근 권한 부여를 참조하세요.
특정 테이블에 대한 범위 역할 할당: 내장된 테이블 데이터 역할에는 테이블 수준 범위가 지원됩니다. 서비스가 한 테이블에만 접근해야 할 경우, 계정을 아닌 테이블 자원에서 역할을 할당하세요.
SAS 토큰의 범위를 특정 파티션 키 및 행 키 범위로 제한: 테이블 SAS는 파티션 키와 행 키 범위 제한을 지원합니다. 이를 사용해 토큰을 다중 테넌트 테이블 내 단일 테넌트의 행이나 특정 데이터 슬라이스로 제한할 수 있습니다. 자세한 내용은 SAS(공유 액세스 서명)를 사용하여 Azure Storage 리소스에 대한 제한된 액세스 권한 부여를 참조하세요.
필요한 특정 테이블 연산만 부여하세요: 테이블 SAS는 ,
add,update,delete권한을 별도로 지원합니다query. 리더 스타일 호출자는query만 유지해야 하며,update또는delete는 절대 유지해서는 안 됩니다.
데이터 보호
Table Storage는 각 엔티티별 ACL 없이 평면 부동산 가방으로 엔티티를 저장합니다. 접근 제어를 후속적으로 바꾸려 하기보다는 분할 전략에서 보안을 고려하세요.
접근 경계에 맞춘 파티션 테이블: 테이블이 여러 테넌트 또는 분류 수준을 서비스할 경우, 테넌트 또는 분류별로 엔터티를 그룹화하는 파티션 키를 선택합니다. 여기에 SAS 파티션 키 범위 제한을 결합하여 테넌트별로 별도의 테이블 없이 테넌트 격리를 강제합니다.
엔터티 속성에 비밀이나 불필요한 개인 데이터를 저장하지 마세요: 엔티티는 테이블이나 파티션에 접근하거나 접근할 수 있는 모든 주체
queryread에게 볼 수 있습니다. 비밀을 Azure Key Vault에 보관하고, 엔터티 내 참조와 함께 저장하며, 쿼리 가능한 속성에 넣는 개인 데이터는 최소화하세요.애플리케이션 계층에서 민감한 속성 값 암호화: 기밀로 유지해야 하는 속성 값의 경우, 삽입 또는 업데이트 전에 Key Vault의 키로 클라이언트 값을 암호화하세요. 이 암호화는 전체 테이블에 적용되는 저장소 측 암호화와는 독립적입니다. 자세한 내용은 키 정보를 참조하세요.
로깅 및 모니터링
테이블 작업에 대한 진단 설정을 사용하도록 설정하세요:
StorageWrite,StorageDelete,StorageRead범주를 Log Analytics로 보내세요. 예기치 않은 권한 부여 방법, 특히 비활성화해야 할 계정의 공유 키 접근 시 경고합니다. 자세한 내용은 Azure Table Storage 모니터링을 참조하세요.대량 삭제 또는 업데이트 작업에 대한 경고: 테이블의 기준선에서 벗어난 벌크
DeleteEntity또는UpdateEntity활동은 데이터 파괴나 변조를 나타낼 수 있습니다. 기준선을 설정하고 편차에 대해 경고하세요.
관련 보안 문서
- Azure Storage 계정을 안전하게 보호하세요 - 교차 적용된 Azure Storage 보안 가이드.
- Azure Blob Storage 보안 설정 - Blob별 보안.
- Azure Files - 파일 공유 보안을 안전하게 하세요.
- Azure Queue Storage를 안전하게 보호하세요 - 큐별 보안.