Azure Blob Storage를 보호하세요

Azure Blob Storage는 방대한 양의 비구조화 객체 데이터를 컨테이너에 저장합니다. 이 지역은 종종 유출, 랜섬웨어, 공개 노출 사고의 표적이 됩니다. 이 글은 블롭 컨테이너, 블롭, 그리고 Azure Data Lake Storage의 계층적 네임스페이스에 대한 보안 권고사항을 제공합니다.

메모

이 글에서는 Azure Blob Storage에 특화된 보안 관행을 다룹니다. 계정 수준의 보안 지침은 'Secure Your Azure Storage account.'를 참조하세요.

네트워크 보안

  • Azure Front Door를 사용하여 사용자 지정 도메인, 정적 웹 사이트 및 공개적으로 제공되는 모든 블롭 콘텐츠 제공: Azure Front Door에서 관리되는 인증서로 TLS를 종료하고 WAF를 사용하도록 설정한 다음, 스토리지 계정의 공용 네트워크 액세스를 제한하여 Front Door만 원본에 연결할 수 있도록 합니다. Azure Storage의 자체 커스텀 도메인 기능은 관리형 TLS 인증서를 지원하지 않으며, Front Door는 익명 컨테이너 접근이 없는 WAF 보호, 속도 제한, 기록 기능을 추가합니다. 자세한 내용은 Use Azure Front Door with Azure Storage blobs를 참조하세요.

  • 사용하지 않을 때는 정적 웹 사이트 엔드포인트를 비활성화하세요: 정적 웹 사이트 기능이 활성화되어 있는 동안에는 $web 컨테이너가 공개적으로 읽을 수 있는 상태로 유지되며, allowBlobPublicAccess이(가) false인 경우에도 마찬가지입니다. 필요하지 않은 계정에서는 정적 웹사이트 기능을 비활성화하세요. 자세한 내용은 Azure Storage에서 정적 웹 사이트 호스팅을 참조하세요.

ID 및 액세스 관리

익명 공개 접근

블롭 수준의 SAS 및 ABAC

  • 블롭 접근에 대해 서비스 SAS보다 사용자 위임 SAS를 선호하세요: 사용자 위임 공유 액세스 서명(SAS)은 Microsoft Entra 자격 증명으로 서명됩니다. 사용자 위임 키를 철회하면 즉시 그 위임에서 발행된 모든 SAS가 무효화되어, 서비스 및 계정 SAS에 없는 취소 경로가 제공됩니다. 자세한 내용은 사용자 위임 SAS 만들기를 참조하세요.

  • 해지 가능하도록 저장된 액세스 정책으로 서비스 SAS의 범위를 지정: 서비스 SAS를 반드시 사용해야 하는 경우 컨테이너의 저장된 액세스 정책에 연결하세요. 그 후 정책을 수정하거나 삭제하여 참조하는 모든 SAS를 취소할 수 있습니다. 정책이 없으면 서비스 SAS는 계정 키를 순환시켜야만 취소할 수 있으며, 이는 계정 내 다른 모든 SAS에 영향을 미칩니다. 자세한 내용은 저장된 액세스 정책 정의를 참조하세요.

  • ABAC를 통한 접근 조건을 위해 블롭 인덱스 태그를 사용하세요: 블롭 인덱스 태그와 속성 기반 접근 제어(ABAC) 조건을 결합하여 특정 태그 값을 가진 블롭에 읽기 전용 접근을 부여합니다 - 예: Classification=Public. 이 방법은 단일 역할 할당으로 민감한 태그 데이터 접근을 허용하지 않고 여러 발신자에게 서비스를 제공할 수 있게 합니다. 자세한 내용은 ABAC 조건을 이용한 블롭 접근 권한 승인을 참조하세요.

데이터 보호

  • 블롭 암호화 범위 사용으로 특정 컨테이너나 블롭에 대한 암호화를 분리할 수 있습니다: 암호화 범위는 단일 계정 내에서 컨테이너 수준 또는 블롭 단위의 세부 수준으로 서로 다른 키나 키 순환 정책을 적용할 수 있게 해줍니다. 이 기능은 계정을 공유하지만 테넌트별 키 제어가 필요한 다중 테넌트 워크로드에 유용합니다. 자세한 내용은 Blob Storage의 암호화 범위 항목을 참조하세요.

  • 서버에 평문으로 나타나서는 안 되는 블롭 데이터에 대해 클라이언트 측 암호화를 사용하세요: 업로드 전에 클라이언트에서 블롭 콘텐츠를 암호화하세요. SDK는 Azure Key Vault 또는 Managed HSM과 통합되어 키 관리를 수행합니다. 서비스 측 CMK와 결합하여 계층 보호를 제공합니다. 자세한 내용은 블롭에 대한 클라이언트 측 암호화를 참조하세요.

불변성과 웜

  • 규제된 데이터에 대해 시간 기반 보존 정책을 설정하세요: 컨테이너 수준 또는 버전 수준 시간 기반 보존을 적용하여 정해진 기간 동안 블롭의 수정 또는 삭제를 방지합니다. 버전 수준의 불변성은 더 세밀한 제어를 제공하며, 개별 버전에서 활성화하거나 확장할 수 있습니다. 자세한 내용은 변경이 불가능한 스토리지로 업무상 중요한 Blob 데이터 저장을 참조하세요.

  • 법적 또는 조사 필요에 의한 무기한 보존에 법적 보류를 사용하기: 법적 보류는 허가된 사용자가 명시적으로 보류를 해제할 때까지 삭제를 막으며, 고정된 기간이 없습니다. 자세한 내용은 변경이 불가능한 스토리지로 업무상 중요한 Blob 데이터 저장을 참조하세요.

  • 유지 정책을 수정 불가능하게 잠가기: 적절한 권한을 가진 사용자는 잠금 해제된 유지 정책을 단축하거나 삭제할 수 있습니다. 정책을 잠그면 보존 기간은 되돌릴 수 없는 약정이 됩니다. 정책 기간을 검증한 후에만 잠그세요. 자세한 내용은 컨테이너에 대한 불변성 정책 구성을 참조하세요.

객체 복제 및 복사 작업

  • 객체 복제를 당신이 제어하는 소스 계정으로 제한하세요: 목적지 계정의 허용된 소스-계정 목록을 설정하여 알려진 신뢰할 수 있는 소스 계정만 데이터를 푸시할 수 있도록 하세요. 자세한 내용은 개체 복제 구성을 참조하세요.

  • 테넌트 간 객체 복제 방지: 출처와 목적지 계정이 서로 다른 Microsoft Entra 테넌트에 있는 복제 정책을 허용하지 않습니다. 이 제한은 권한이 있는 사용자가 외부 테넌트에 복제를 구성할 수 없도록 합니다. 자세한 내용은 Microsoft Entra 테넌트 간 개체 복제 방지를 참조하세요.

  • 복사 작업 허용 범위 제한: 계정을 동일 테넌트 또는 동일 구독 내 소스 계정에서만 복사 작업만 허용하도록 설정하세요. 이 설정은 공통 탈출 경로를 차단합니다 - 개인 계정에서 공격자가 통제하는 계정으로 복사하는 경로. 자세한 내용은 복사 작업에 대한 허용 범위를 참조하세요.

백업 및 복구

  • 블롭 버전 관리 활성화하여 쓰기 및 삭제 시 이전 버전을 보존하세요: 버전 관리가 활성화되면 각 쓰기나 삭제 작업이 새 버전을 생성하고 이전 상태를 유지합니다. 버전의 주소를 지정하고 복원할 수 있습니다. 자세한 내용은 Blob 버전 관리를 참조하세요.

  • 블롭과 컨테이너에 대해 소프트 삭제 활성화: 소프트 삭제는 삭제된 블롭과 컨테이너를 일정 기간 동안 보관하여 그 기간 동안 복원할 수 있습니다. 컨테이너 레벨과 블롭 레벨 소프트 삭제를 따로 설정하고 둘 다 활성화하세요. 자세한 내용은 블롭에 대해서는 소프트 삭제 , 컨테이너에 대해서는 소프트 삭제를 참조하세요.

  • 블록 블롭 계정에 대해 시점 복원 활성화: 시점 복원은 버전 관리와 소프트 삭제를 통해 블록 블록 범위를 특정 과거 타임스탬프로 복원합니다. 이 기능은 랜섬웨어 복구에 유용합니다. 특정 시점 복원은 버전 관리, 블롭 소프트 삭제, 변경 피드를 활성화해야 합니다. 자세한 내용은 블록 Blob에 대한 특정 시점 복원을 참조하세요.

  • 감사 및 포렌식 변경 피드 활성화: 변경 피드는 계정 내 모든 블롭의 변경 사항을 순서대로 변경할 수 없는 로그입니다. 시점 복원을 가능하게 하는 것 외에도, 조사를 위한 견고한 감사 기록을 제공합니다. 자세한 내용은 Azure Blob Storage 변경 피드 지원을 참조하세요.

Azure Data Lake Storage

Data Lake Storage는 계층적 네임스페이스와 POSIX와 유사한 접근 제어 목록(ACL)을 Blob Storage에 추가합니다. ACL과 RBAC는 함께 작동합니다 - RBAC를 통해 대략적인 접근 권한을 부여하고 ACL로 파일 시스템 내에서 세분화합니다.

  • 대규모 접근에는 RBAC, 세분화된 접근에는 ACL을 사용하세요: 컨테이너 또는 계정 수준에 내장된 블롭 RBAC 역할을 할당하여 광범위한 접근 권한을 부여합니다. 그 다음, 디렉터리와 파일에 ACL을 사용해 컨테이너 내 접근을 제한합니다. 전체 컨테이너 전반에 걸쳐 사용자가 필요한 권한에 ACL만 사용하지 마세요. RBAC는 평가와 감사가 더 효율적입니다. 자세한 내용은 Azure Data Lake Storage의 액세스 제어 모델을 참조하세요.

  • 디렉터리에 기본 ACL을 적용하여 새로운 자식 항목에 대한 권한을 상속하기: 기본 ACL은 ACL 설정 후 생성된 파일과 디렉터리에 적용됩니다. 개별 파일에 ACL을 관리하지 않도록 디렉터리 수준에서 설정하세요. 자세한 내용은 Azure Data Lake Storage의 접근 제어 목록을 참조하세요.

  • 계정 생성 시 계층적 네임스페이스를 활성화하세요: 기존 계정에서는 마이그레이션 없이 계층적 네임스페이스를 활성화할 수 없습니다. 워크로드가 Data Lake Storage 의미론을 사용하는 것을 알고 있다면, 나중에 마이그레이션하지 말고 처음부터 활성화하세요. 자세한 내용은 Azure Data Lake Storage 계층적 네임스페이스를 참조하세요.

로깅 및 모니터링

  • 익명 액세스를 비활성화한 후 익명 액세스 적중 시 경고: allowBlobPublicAccess를 false(으)로 설정하면 저장소 로그에서 AuthenticationType == "Anonymous"를 필터링하고, 일치 항목이 있으면 경고를 보냅니다. 이 히트는 클라이언트가 잘못 설정되었거나 탐색 시도를 나타낸다. 자세한 내용은 Azure Storage 모니터링을 참조하세요.

  • Defender for Storage 악성코드 스캔 판결을 활성화하고 대응하기: 악성코드 스캔을 활성화할 때, 판결에 MalwareScanningResult 대한 자동 응답(블롭 삭제, 격리 태그, 하위 워크플로우 억제)을 설정하여 식별된 악성 블롭이 소비자에게 전달되지 않도록 합니다. 자세한 내용은 Defender for Storage의 '악성코드 스캔 대응' 결과를 참조하세요.

  • 분류 드리프트를 위한 블롭 인덱스 태그 변이 추적: 블롭 인덱스 태그를 사용해 ABAC 접근 조건을 결정하면, 태그 변경이 블롭을 읽을 수 있는 사람이 직접 바뀝니다. 민감한 컨테이너에 대한 SetBlobTags 작업을 기록하고 경고합니다. 자세한 내용은 Blob 인덱스 태그를 사용하여 Azure Blob Storage의 데이터를 관리하고 찾기를 참조하세요.

다음 단계