MS Azure/Cloud Storage

[Azure Storage] Azure Storage Account Security 보안

aliceintr 2021. 1. 20. 06:31
반응형

Azure storage 가 제공하는 보안 기능에 대해 살펴 보고자 한다.

1. Azure Storage 보안기능

2. Azure Storage Account Keys

3. Shared Access Signature

4. Control Network Access to your Storage Account

5. Advanced Threat Protection for Azure Storage

6. Azure Data Lake Storage Security 


Azure Storage 보안 기능

저장 데이터 보호

Azure Storage에 기록된 모든 데이터는 256비트 AES(Advanced Encryption Standard) 암호를 사용하는 SSE(스토리지 서비스 암호화)를 통해 자동으로 암호화되며, FIPS 140-2를 준수합니다. SSE는 데이터를 Azure Storage에 write 할 때 자동으로 암호화합니다. Azure Storage에서 데이터를 읽을 때 Azure Storage는 먼저 암호를 해독한 후에 데이터를 반환합니다. 이 프로세스에서는 추가 비용이 발생하지 않으며 성능이 저하되지 않습니다. 비활성화할 수 없습니다.

VM(가상 머신)의 경우 Azure를 사용하면 Azure Disk Encryption을 사용하여 VHD(가상 하드 디스크)를 암호화할 수 있습니다. 이 암호화는 Windows용 BitLocker 이미지와 Linux용 dm-crypt를 사용합니다.

Azure Key Vault는 디스크 암호화 키와 비밀을 제어하고 관리하는 데 도움이 되는 키를 자동으로 저장합니다. 따라서 누군가가 VHD 이미지에 액세스하여 다운로드하는 경우에도 VHD의 데이터에는 액세스할 수 없습니다.

전송 중 데이터 보호

Azure와 클라이언트 간에 전송 수준 보안 을 사용하도록 설정하여 데이터를 안전하게 유지합니다. 항상 HTTPS 를 사용하여 공용 인터넷을 통한 통신을 보호합니다. REST API를 호출하여 스토리지 계정의 개체에 액세스하는 경우 스토리지 계정에 보안 전송을 요구하여 HTTPS를 사용하도록 강제할 수 있습니다. 보안 전송을 사용하도록 설정되면 HTTP를 사용하는 연결이 거부됩니다. 또한 이 플래그는 모든 파일 공유 탑재에 SMB 3.0을 요구하여 SMB를 통한 전송 보안을 적용합니다

**SMB 프로토콜 : 서버 메시지 블록(Server Message Block, SMB)은 도스윈도우에서 파일이나 디렉터리 및 주변 장치들을 공유하는데 사용되는 메시지 형식이다. NetBIOS는 SMB 형식에 기반을 두고 있으며, 많은 네트워크 제품들도 SMB를 사용한다. 이러한 SMB 기반의 네트워크에는 랜매니저, 윈도우 포 워크그룹(Windows for Workgroups), 윈도우 NT, 그리고 랜 서버(Lan Server) 등이 있다. 서로 다른 운영 체제 사이에 파일을 공유할 수 있도록 하기 위해 SMB를 사용하는 제품들도 많이 있다. 그 중 하나가 삼바인데, 유닉스와 윈도우 컴퓨터들간에 디렉터리와 파일을 공유할 수 있게 해 준다. SMB는 대부분 마이크로소프트 윈도우를 실행하고 있는 컴퓨터에서 이용된다. 마이크로소프트 환경에서 사용자들은 대개 이를 단순히 "마이크로소프트 윈도우 네트워크"로 알고 있다.

Azure CLI 로 보안전송 설정하기

az storage account show -g {ResourceGroupName} -n {StorageAccountName}
{
  "name": "{StorageAccountName}",
  "enableHttpsTrafficOnly": false,
  "type": "Microsoft.Storage/storageAccounts"
  ...
}

도메인 간 브라우저 액세스 지원 CORS support

Contoso는 여러 웹 사이트 자산 유형을 Azure Storage에 저장합니다. 이러한 유형에는 이미지와 비디오가 포함됩니다. Contoso는 브라우저 앱을 보호하기 위해 특정 도메인에 대한 GET 요청을 잠급니다.

Azure Storage는 CORS(원본 간 리소스 공유, Cross-origin resource Sharing)를 통해 도메인 간 액세스를 지원합니다. CORS는 HTTP 헤더를 사용하여 한 도메인의 웹 애플리케이션에서 다른 도메인의 서버에 있는 리소스에 액세스할 수 있도록 합니다. CORS를 사용하면 웹앱에서 권한 부여된 원본의 권한 부여된 콘텐츠만 로드할 수 있습니다.

CORS 지원은 Storage 계정에서 사용하도록 설정할 수 있는 선택적 플래그입니다. 이 플래그는 HTTP GET 요청을 사용하여 Storage 계정에서 리소스를 검색할 때 적절한 헤더를 추가합니다.

**CORS ?[Network/HTTP] - [HTTP] CORS - Cross Origin Resource Sharing 교차 출처 리소스 공유

 

[HTTP] CORS - Cross Origin Resource Sharing 교차 출처 리소스 공유

브라우저 간에 데이터를 주고 받는 과정에서 도메인 이름이 서로 다른 사이트간에 api 를 요청할 때, 공유 설정을 하는 것을 말한다. Cross-Origin Resource Sharing (CORS) is an HTTP-header based mechanism th..

buildgoodhabit.tistory.com

 

데이터에 액세스할 수 있는 사용자 제어 RBAC

클라이언트는 스토리지 계정의 데이터에 액세스하기 위해 HTTP 또는 HTTPS를 통해 요청합니다. 보안 리소스에 대한 모든 요청에는 권한을 부여해야 합니다. 서비스에서 데이터에 액세스하는 데 필요한 권한이 클라이언트에 있는지 확인합니다. 여러 액세스 옵션 중에서 선택할 수 있습니다. 가장 유연한 옵션은 분명히 역할 기반 액세스입니다.

Azure Storage는 리소스 관리와 데이터 작업에 Azure Active Directory 및 RBAC(역할 기반 액세스 제어)를 지원합니다. 스토리지 계정으로 범위가 지정된 RBAC 역할을 보안 주체에 할당할 수 있습니다. - 이 부분은 영어 설명이 더 직관적이라 영어 설명을 추가한다. To Security Principals, you can assign RBAC roles that are scoped to the storage account. Active Directory를 사용하여 Configuration과 같은 Resource management operations에 대한 권한을 부여합니다. Active Directory는 Blob 및 Queue 스토리지의 데이터 작업을 지원합니다.

구독, 리소스 그룹, 스토리지 계정, 개별 컨테이너 또는 큐로 범위가 지정된 RBAC 역할을 Azure 리소스에 대한 보안 주체 또는 관리 ID에 할당할 수 있습니다. - 이 부분은 영어 설명이 더 직관적이라 영어 설명을 추가한다. You can assign RBAC roles that are scoped to a subscription, a resource group, a storage account or an individual container or queue.

스토리지 액세스 감사 Auditing access

감사는 액세스를 제어하는 또 다른 부분입니다. Build-in Storage Analytics Service를 사용하여 Azure Storage 액세스를 감사할 수 있습니다.

Storage Analytics logs 은 모든 작업을 실시간으로 기록하고, Storage Analytics logs 에서 특정 요청을 검색할 수 있습니다. 인증 메커니즘, 작업의 성공 여부 또는 액세스된 리소스를 기준으로 필터링합니다.


Azure Storage Account Keys

Azure Storage Account은 권한이 부여된 앱을 Active Directory에 만들어 Blob 및 Queue의 데이터에 대한 액세스를 제어할 수 있습니다. 이 인증 방법은 Blob 스토리지 또는 Queue 스토리지를 사용하는 앱에 가장 적합한 솔루션입니다.

다른 경우에는 클라이언트가 Shared Key 또는 Shared Secret 을 사용할 수 있습니다. 이 인증 옵션은 가장 사용하기 쉬운 옵션 중 하나이며 Blob, Files, Queue 및 Tables을 지원합니다. 클라이언트는 모든 요청의 Authorization HTTP 헤더에 공유 키를 embedded 하고, Storage 계정은 Key의 유효성을 검사합니다.

예를들어 , Application 은 blob 리소스에 대한 GET request를 보낸다.

GET http://myaccount.blob.core.windows.net/?restype=service&comp=stats

HTTP 헤더는 REST API 버전, 날짜 및 인코딩된 공유키를 제어한다. 아래의 예시와 같은 모양이다

x-ms-version: 2018-03-28  
Date: Wed, 23 Oct 2018 21:00:44 GMT  
Authorization: SharedKey myaccount:CY1OP3O3jGFpYFbTCBimLn0Xov0vt0khH/E5Gy0fXvg=

Azure Storage Account Keys

Storage Account 에 대해 2개의 키를 생성할 수 있다. 이 두개의 키는 이 account 의 모든 항목에 대한 엑세스를 제공한다.

아래 옵션에 들어가면 얻을 수 있다.

Protecting Shared Keys

이러한 2개의 키를 다시 생성하는 경우를 알아보겠습니다.

1) 보안상의 이유로 키는 주기적으로 다시 생성할 수 있습니다.

2) 누군가가 애플리케이션을 해킹하여 하드 코드되었거나 구성 파일에 저장된 키를 획득한 경우 키를 다시 생성합니다. 손상된 키는 해커에게 스토리지 계정에 대한 모든 액세스 권한을 부여할 수 있습니다.

3) 팀에서 스토리지 계정 키를 유지하는 Storage Explorer 애플리케이션을 사용하고 팀 멤버 중 한 명이 그만두는 경우 키를 다시 생성합니다. 그렇지 않으면 애플리케이션이 계속 작동하여 이전의 팀 멤버가 스토리지 계정에 액세스할 수 있게 됩니다.

To refresh Keys

1) Change each trusted app to use the secondary key

2) Refresh the primary key in the Azure portal, Consider this as the new secondary Key value.

** NOTE : 키가 새로 고쳐지면 이전 키 값을 사용하려고 시도하는 클라이언트는 모두 거부됩니다. 공유 키를 사용하는 모든 클라이언트를 확인하고 계속 작동하도록 클라이언테에게 업데이트를 해줘야 한다.


Shared Access Signature

앞에서 언급한 Storage Account Key 는 외부의 third party application 과 공유하지 않는 것이 좋습니다. 외부의 앱에서 데이터에 이 키를 가지고 엑세시 해야하는 경우 보안의 문제가 생길 수 있기 때문입니다. 이러한 경우 Shared Access Signature(SAS)를 사용합니다. Shared Access Signature(SAS)은 URI에 연결할 수 있는 보안 토큰이 포함된 문자열입니다. SAS을 사용하여 스토리지 개체에 대한 액세스를 위임하고 액세스에 대한 권한 및 시간 범위와 같은 제약 조건을 지정합니다.

예를 들어 Blob 스토리지의 파일 시스템에 사진을 업로드할 수 있도록 SAS 토큰을 고객에게 제공할 수 있습니다. 이와 별도로 해당 사진을 읽을 수 있는 권한을 웹 애플리케이션에 부여할 수 있습니다. 두 경우 모두 애플리케이션에서 작업을 수행하는 데 필요한 액세스만 허용합니다.

Types of shared access signatures

1) service level shared access signatures : Storage Account의 특정 리소스에 대한 액세스를 허용할 수 있습니다. 예를 들어 앱에서 파일 시스템의 파일 목록을 검색하거나 파일을 다운로드할 수 있도록 허용하려면 이 유형의 공유 액세스 서명을 사용합니다.

2) account level shared access signatures : service level shared access signatures을 통해 허용할 수 있는 모든 항목과 추가 리소스 및 기능에 대한 액세스를 허용할 수 있습니다. 예를 들어 account level shared access signatures을 사용하여 파일 시스템을 만들 수 있습니다.

일반적으로 사용자가 스토리지 계정에서 자신의 데이터를 읽고 쓰는 서비스에 공유 액세스 서명을 사용합니다. 이러한 사용자 데이터를 저장하는 Accounts에는 다음과 같은 두 가지 일반적인 설계가 있습니다.

1) 클라이언트에서 인증을 수행하는 프런트 엔드 프록시 서비스를 통해 데이터를 업로드하고 다운로드합니다. 이 프런트 엔드 프록시 서비스에는 비즈니스 규칙의 유효성 검사(Validation of business rules) 를 허용하는 이점이 있습니다. 그러나 서비스에서 대량의 데이터 또는 큰 볼륨의 트랜잭션을 처리해야 하는 경우 수요에 맞게 이 서비스의 크기를 조정하는 것이 복잡하거나 비용이 많이 들 수 있습니다.

2) SAS provider service 에서 필요에 따라 클라이언트를 인증합니다. 그런 다음, 공유 액세스 서명을 생성합니다. 공유 액세스 서명을 받은 후에는 클라이언트에서 스토리지 계정 리소스에 직접 액세스할 수 있습니다. 공유 액세스 서명은 클라이언트의 권한과 액세스 간격을 정의합니다. 공유 액세스 서명을 사용하면 프런트 엔드 프록시 서비스를 통해 모든 데이터를 라우팅할 필요성이 줄어듭니다.


Control Network Access to your Storage Account

토리지 계정은 네트워크에 있는 모든 클라이언트의 연결을 허용합니다. 선택한 네트워크에 대한 액세스를 제한하려면 먼저 기본 동작을 변경해야합니다. 액세스는 특정 IP 주소, 범위 또는 가상 네트워크로 제한가능합니다.

**NOTE : 네트워크 규칙을 변경하면 Azure Storage에 연결하는 애플리케이션의 기능에 영향을 줄 수 있습니다. Default 네트워크 규칙을 거부 로 설정하면 특정 네트워크 규칙에서 액세스를 허용 하지 않는 한 데이터에 대한 모든 액세스가 차단됩니다. 액세스를 거부하도록 기본 규칙을 변경하기 전에 네트워크 규칙을 사용하여 허용된 모든 네트워크에 액세스 권한을 부여해야 합니다.

Manage Default Network access rules


Advanced Threat Protection for Azure Storage

Azure Defender for Storage는 Storage Account 에 액세스하거나 악용하려는 비정상적이고 잠재적으로 유해한 시도를 감지하는 추가 보안 인텔리전스 계층을 제공합니다. 이 보호 레이어를 사용하면 보안 전문가가 되거나 보안 모니터링 시스템을 관리하지 않고도 위협을 해결할 수 있습니다.

보안 경고는 활동의 비정상 현상이 발생할 때 트리거됩니다. 이러한 보안 경고는 Azure Security Center와 통합되며, 의심스러운 활동에 대한 세부 정보 및 위협을 조사하고 수정하는 방법에 대한 권장 사항을 포함하여 Subscription Admin에게 메일로도 전송됩니다.

Azure Defender for Storage는 현재 Blob 스토리지, Azure Files 및 Azure Data Lake Storage Gen2에서 사용할 수 있습니다. Azure Defender를 지원하는 계정 유형으로는 general-puspose v2, block Blob, Blob storage accounts 등이 있습니다. Azure Defender for Storage는 모든 퍼블릭 클라우드 및 미국 정부 클라우드에서 사용할 수 있으며, 다른 sovereign이나 Azure Government 클라우드 지역에서는 사용할 수 없습니다.

Data Lake Storage에 계층 구조 네임스페이스를 사용하도록 설정된 계정은 Azure Blob Storage API와 Data Lake Storage API를 사용하여 트랜잭션을 지원합니다. Azure 파일 공유는 SMB를 통한 트랜잭션을 지원합니다.

Explore Security Anomalies

스토리지 작업에서 잘못된 부분이 발생하면 의심스러운 보안 이벤트에 대한 정보가 포함된 이메일 알림을 받게 됩니다. 이벤트 세부 정보에는 다음과 같은 내용이 포함됩니다.

  • 변칙의 특성 Nature of the anomaly
  • 스토리지 계정 이름 Storage account name
  • 이벤트 시간 Event time
  • 스토리지 유형 Storage type
  • 잠재적 원인 Potential causes
  • 조사 단계 Investigation steps
  • 수정 단계 Remediation steps
  • 메일에는 잠재적인 위협을 조사하고 완화하기 위해 가능한 원인과 권장 조치에 대한 세부 정보도 포함됩니다.Email also includes details about possible causes and recommended actions to investigate and mitigate the potential threat.

Azure Security Center의 보안 경고 타일에서 현재 보안 경고를 검토하고 관리할 수 있습니다. 특정 경고를 선택하면 현재 위협을 조사하고 향후 위협을 해결하기 위한 세부 정보 및 조치가 제공됩니다.


Azure Data Lake Storage Security

Azure Data Lake Storage Gen2는 기업에서 데이터를 통합할 수 있는 최고 수준의 데이터 레이크 솔루션을 제공합니다. Azure Blob 스토리지에 구축되었으므로 이 모듈에서 검토한 모든 보안 기능을 상속합니다.

RBAC(역할 기반 액세스 제어)와 함께 Azure Data Lake Storage Gen2는 액세스를 권한 있는 사용자, 그룹 또는 서비스 주체로 제한하는 POSIX 규격 ACL(액세스 제어 목록)을 제공합니다. 제한 사항이 유연하며 세분화되고 관리하기 쉬운 방식으로 적용됩니다. Azure Data Lake Storage Gen2는 Azure Active Directory OAuth 2.0 bearer tokens을 통해 인증합니다. 이렇게 하면 Azure AD Connect와의 federations및 단순한 암호보다 더 강력한 보호를 제공하는 multi-factor authentication 을 포함하여 유연한 인증 체계를 고려할 수 있습니다.

더 중요한 사실은 이러한 인증 체계가 데이터를 사용하는 기본 분석 서비스에 통합된다는 것입니다. 이러한 서비스로는 Azure Databricks, HDInsight 및 Azure Synapse Analytics가 있습니다. Azure Storage Explorer와 같은 관리 도구도 포함됩니다. 인증이 완료되면 가장 세분화된 권한이 적용되므로 기업의 빅 데이터 자산에 대한 적절한 권한 부여 수준을 보장합니다.

Azure Storage 엔드투엔드 데이터 암호화 및 전송 계층 보호는 엔터프라이즈 데이터 레이크에 대한 보안 방어막을 완성합니다. 동일한 분석 엔진 및 도구 세트에서 이러한 추가 보호 계층을 활용하여 분석 파이프라인을 완벽하게 보호할 수 있습니다.


Reference

출처 1 : docs.microsoft.com/ko-kr/learn/modules/secure-azure-storage-account/

 

Azure Storage 계정 보안 - Learn

Azure Storage에서 액세스 키, 보안 네트워크 및 Advanced Threat Protection 모니터링을 통해 데이터를 보호하는 다중 계층 보안을 제공하는 방법을 알아봅니다.

docs.microsoft.com

출처 2 : docs.microsoft.com/ko-kr/rest/api/storageservices/authorize-requests-to-azure-storage

 

Azure 저장소에 대한 요청 권한 부여(REST API)

Blob, 파일, 큐 또는 테이블 서비스의 보안 리소스에 대해 이루어진 모든 요청은 권한이 있어야 합니다. 권한 부여는 저장소 계정의 리소스에 액세스할 수 있도록 사용자가 원하는 경우에만 액세

docs.microsoft.com

출처 3 : docs.microsoft.com/ko-kr/azure/storage/common/storage-sas-overview?toc=/azure/storage/files/toc.json

 

SAS (공유 액세스 서명)를 사용 하 여 데이터에 대 한 제한 된 액세스 권한 부여 - Azure Storage

SAS (공유 액세스 서명)를 사용 하 여 blob, 큐, 테이블 및 파일을 비롯 한 Azure Storage 리소스에 대 한 액세스 권한을 위임 하는 방법에 대해 알아봅니다.

docs.microsoft.com

출처 4 : docs.microsoft.com/ko-kr/rest/api/storageservices/authorize-with-shared-key

 

공유 키(REST API) - Azure 저장소에 대한 권한 부여

공유 키를 사용하여 Azure 저장소에 대한 요청을 승인하는 방법을 알아봅니다.

docs.microsoft.com

출처 5 : docs.microsoft.com/ko-kr/rest/api/storageservices/authorize-with-azure-active-directory

 

Azure Active Directory (REST API)에 대 한 권한 부여-Azure Storage

Azure Storage는 Blob 및 큐 서비스에 대 한 요청에 대 한 id 기반 권한 부여를 위해 Azure Active Directory (Azure AD)와의 통합을 제공 합니다. Azure AD에서는 RBAC (역할 기반 액세스 제어)를 사용 하 여 사용자,

docs.microsoft.com

출처 6 : docs.microsoft.com/ko-kr/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services

 

Azure Storage에 대 한 CORS (크로스-원본 자원 공유) 지원

CORS는 특정 도메인에서 실행되는 웹 애플리케이션이 다른 도메인의 자원에 액세스할 수 있도록 하는 HTTP 기능입니다. 각 Azure Storage 서비스에 대해 CORS 규칙을 개별적으로 설정할 수 있습니다. COR

docs.microsoft.com

 

반응형