Azure Storage를 사용하여 PaaS 웹 및 모바일 애플리케이션 보안을 유지하는 모범 사례

이 문서에서는 PaaS(Platform as a Service) 웹 및 모바일 애플리케이션 보안을 위한 Azure Storage 보안 모범 사례에 대해 설명합니다. 이러한 모범 사례는 Azure에 대한 Microsoft와 고객의 경험에서 비롯된 것입니다.

Azure에서는 온-프레미스에서는 쉽게 달성할 수 없는 방식으로 스토리지를 배포하고 사용할 수 있습니다. Azure Storage를 사용하면 비교적 적은 노력으로 높은 수준의 확장성 및 가용성을 얻을 수 있습니다. Azure Storage는 Windows 및 Linux Azure Virtual Machines의 기반일 뿐만 아니라 대규모 분산 애플리케이션도 지원할 수 있습니다.

Azure Storage는 Blob 스토리지, 테이블 스토리지, 큐 스토리지 및 파일 스토리지 등의 4가지 서비스를 제공합니다. 자세한 내용은 Microsoft Azure Storage 소개를 참조하세요.

이 문서에서는 다음과 같은 모범 사례를 다룹니다.

  • SAS(공유 액세스 서명)
  • Azure RBAC(Azure 역할 기반 액세스 제어)
  • 고가치 데이터에 대한 클라이언트 쪽 암호화
  • 스토리지 서비스 암호화

스토리지 계정 키 대신 공유 액세스 서명 사용

액세스 제어는 중요합니다. Azure Storage 액세스를 쉽게 제어할 수 있도록 하기 위해 스토리지 계정을 만들 때는 512비트 SAK(스토리지 계정 키) 2개가 생성됩니다. 이처럼 키가 중복 생성되므로 일상적인 키 순환 중에 서비스 중단을 방지할 수 있습니다.

스토리지 액세스 키는 우선 순위가 높은 비밀로, 스토리지 액세스 제어를 담당하는 사용자만 액세스할 수 있어야 합니다. 잘못된 사용자가 이러한 키에 액세스하면 스토리지를 완전히 제어하고 스토리지에서 파일을 바꾸거나 삭제하거나 추가할 수 있게 됩니다. 여기에는 조직 또는 고객에게 손상을 줄 수 있는 맬웨어 및 다른 유형의 콘텐츠가 포함됩니다.

스토리지의 개체에 대한 액세스를 제공하는 방법이 필요합니다. 보다 세부적인 액세스 권한을 제공하려면 SAS(공유 액세스 서명)를 활용할 수 있습니다. SAS를 사용하면 미리 정의된 시간 간격 동안 특정 사용 권한을 사용하여 스토리지의 특정 개체를 공유할 수 있습니다. 공유 액세스 서명을 통해 다음을 정의할 수 있습니다.

  • SAS가 유효한 경우 시작 시간 및 만료 시간을 포함하는 간격입니다.
  • SAS에서 부여된 권한입니다. 예를 들어 blob의 SAS는 해당 blob에 사용자 읽기 및 쓰기 권한을 부여할 수 있지만 삭제 권한은 부여하지 않습니다.
  • Azure Storage가 SAS를 수락하는 선택적 IP 주소 또는 IP 주소 범위입니다. 예를 들어 조직에 속한 IP 주소 범위를 지정할 수 있습니다. 이것은 SAS에 대한 보안의 또 다른 측정값을 제공합니다.
  • Azure Storage가 SAS을 수락하는 프로토콜입니다. HTTPS를 사용하여 클라이언트에 대한 액세스를 제한하려면 이 선택적 매개 변수를 사용할 수 있습니다.

SAS를 사용하여 Storage 계정 키를 제공하지 않고도 공유하려는 방식으로 콘텐츠를 공유할 수 있습니다. 애플리케이션에서 항상 SAS를 사용하는 것은 스토리지 계정 키를 손상시키지 않고 저장 리소스를 공유할 수 있는 보안 방법입니다.

공유 액세스 서명에 대해 자세히 알아보려면 공유 액세스 서명 사용을 참조하세요.

Azure 역할 기반 액세스 제어 사용

액세스를 관리하는 또 다른 방법은 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하는 것입니다. Azure RBAC를 사용하면 알아야 하는 필요성과 최소 권한 보안 원칙에 따라 직원에게 정확히 필요한 권한을 부여하는 데 초점을 맞춥니다. 권한이 너무 많으면 공격자에게 계정이 노출될 수 있고, 권한이 너무 적으면 직원이 업무를 효율적으로 수행할 수 없습니다. RBAC는 Azure에 대한 세밀한 액세스 관리를 제공하여 이 문제를 해결하도록 도와줍니다. 액세스 제어는 데이터 액세스에 대한 보안 정책을 적용하려는 조직에 필수적입니다.

Azure의 Azure 기본 제공 역할을 사용하여 사용자에게 권한을 할당할 수 있습니다. 예를 들어 스토리지 계정을 관리해야 하는 클라우드 운영자의 경우 스토리지 계정 참가자 역할과 클래식 스토리지 계정 관리용 클래식 스토리지 계정 참가자 역할을 할당할 수 있습니다. VM을 관리해야 하지만 VM이 연결된 가상 네트워크 또는 스토리지 계정은 관리할 필요가 없는 클라우드 운영자의 경우 Virtual Machine 참가자 역할에 추가할 수 있습니다.

Azure RBAC와 같은 기능을 사용하여 데이터 액세스 제어를 적용하지 않는 조직은 사용자에게 필요 이상으로 많은 권한을 부여하게 될 수 있습니다. 필요 이상의 권한을 부여하면 일부 사용자가 원래는 액세스할 수 없어야 하는 데이터에 액세스할 수 있게 되어 데이터 손상이 발생할 수 있습니다.

Azure RBAC에 대한 자세한 정보:

고가치 데이터에 대해 클라이언트 쪽 암호화 사용

클라이언트 쪽 암호화를 사용하여 Azure Storage에 데이터를 업로드하기 전에 전송 중인 데이터를 프로그래밍 방식으로 암호화하고, 데이터를 검색할 때 프로그래밍 방식으로 암호를 해독할 수 있습니다. 클라이언트 측 암호화는 전송 중인 데이터와 미사용 데이터를 모두 암호화할 수 있습니다. 클라이언트 쪽 암호화는 데이터를 암호화하는 가장 안전한 방법이지만 애플리케이션을 프로그래밍 방식으로 변경하고 키 관리 프로세스를 배치해야 합니다.

또한 클라이언트 쪽 암호화를 사용하면 암호화 키를 단독으로 제어할 수 있습니다. 자체 암호화 키를 생성하고 관리할 수 있습니다. 클라이언트 쪽 암호화는 Azure Storage 클라이언트 라이브러리가 CEK(콘텐츠 암호화 키)를 생성하고 KEK(키 암호화 키)를 사용하여 래핑(암호화)하는 봉투(envelope) 기술을 사용합니다. KEK는 키 식별자로 식별되고 비대칭 키 쌍 또는 대칭 키일 수 있으며 로컬로 관리되거나 Azure Key Vault에 저장됩니다.

클라이언트 쪽 암호화는 Java 및 .NET 스토리지 클라이언트 라이브러리에 기본적으로 제공되어 있습니다. 클라이언트 애플리케이션 내에서 데이터를 암호화하고 자체 암호화 키를 생성 및 관리하는 방법에 대한 자세한 내용은 Microsoft Azure Storage용 클라이언트 쪽 암호화 및 Azure Key Vault를 참조하세요.

미사용 데이터에 대해 스토리지 서비스 암호화 사용

File Storage에 대해 Storage 서비스 암호화가 사용되도록 설정되면 데이터는 AES-256 암호화를 사용하여 자동으로 암호화됩니다. Microsoft는 모든 암호화, 해독 및 키 관리를 처리합니다. 이 기능은 LRS 및 GRS 중복 유형에 사용할 수 있습니다.

다음 단계

이 문서에서는 PaaS 웹 및 모바일 애플리케이션 보안을 위한 Azure Storage 보안 모범 사례 모음을 소개했습니다. PaaS 배포 보안 유지에 대한 자세한 내용은 다음을 참조하세요.