Azure Key Vault

완료됨

Azure Key Vault는 비밀을 안전하게 저장하고 액세스하기 위한 클라우드 서비스입니다. 비밀은 API 키, 암호, 인증서 또는 암호화 키 등에 대한 액세스를 엄격하게 제어하려는 항목입니다. Key Vault 서비스는 자격 증명 모음과 관리형 HSM(하드웨어 보안 모듈) 풀이라는 두 가지 유형의 컨테이너를 지원합니다. 자격 증명 모음은 소프트웨어 및 HSM 지원 키, 암호 및 인증서를 저장하도록 지원합니다. 관리형 HSM 풀은 HSM 지원 키만 지원합니다.

다음은 기타 중요 용어입니다.

테넌트 - Microsoft 클라우드 서비스의 특정 인스턴스를 소유하고 관리하는 조직입니다. 조직에 대한 Azure 및 Microsoft 365 서비스 세트를 참조하는 데 자주 사용됩니다.

자격 증명 모음 소유자 - 키 자격 증명 모음을 만들고 전체 자격 증명 모음을 액세스하고 제어할 수 있습니다. 자격 증명 모음 소유자는 비밀과 키에 액세스하는 사용자를 기록하도록 감사를 설정할 수도 있습니다. 관리자는 키 수명 주기를 제어할 수 있습니다. 새 버전의 키로 롤링하고, 백업하고, 관련 작업을 수행할 수 있습니다.

자격 증명 모음 소비자: 자격 증명 모음 소유자가 소비자 액세스 권한을 부여하면 이 소비자가 키 자격 증명 모음 내의 자산에 대한 작업을 수행할 수 있습니다. 사용 가능한 작업은 부여된 사용 권한에 따라 달라집니다.

관리형 HSM 관리자: 관리자 역할이 할당된 사용자는 관리형 HSM 풀을 완전히 제어할 수 있습니다. 다른 사용자에게 제어된 액세스를 위임하는 추가 역할 할당을 만들 수 있습니다.

관리형 HSM 암호화 책임자/사용자: 관리형 HSM의 키를 사용하여 암호화 작업을 수행하는 사용자 또는 서비스 주체에게 일반적으로 할당되는 기본 제공 역할입니다. 암호화 사용자는 새 키를 만들 수 있지만 키를 삭제할 수는 없습니다.

관리형 HSM 암호화 서비스 암호화 사용자: 고객 관리형 키로 미사용 데이터를 암호화하기 위해 일반적으로 서비스 계정 관리형 서비스 ID(예: Storage 계정)에 할당되는 기본 제공 역할입니다.

리소스 - Azure를 통해 사용할 수 있는 관리 가능한 항목입니다. 가상 머신, 스토리지 계정, 웹앱, 데이터베이스 및 가상 네트워크를 예로 들 수 있습니다. 그 외에도 다양한 항목이 있습니다.

리소스 그룹: Azure 솔루션에 관련된 리소스를 보유하는 컨테이너입니다. 리소스 그룹에는 솔루션에 대한 모든 리소스 또는 그룹으로 관리하려는 해당 리소스만 포함될 수 있습니다. 사용자의 조직에 가장 적합한 내용에 따라 리소스 그룹에 리소스를 어떻게 할당할지 결정합니다.

보안 주체: Azure 보안 주체는 특정 Azure 리소스에 액세스하기 위해 사용자가 만든 앱, 서비스 및 자동화 도구에서 사용하는 보안 ID입니다. 특정한 역할이 있는 "사용자 ID"(사용자 이름과 암호 또는 인증서)이며 엄격하게 통제된 권한을 갖습니다. 일반 사용자 ID와 달리 보안 주체는 특정 작업만 수행하면 됩니다. 관리 작업을 수행하는 데 필요한 최소 권한 수준만 부여하면 보안이 향상됩니다. 애플리케이션 또는 서비스에 사용되는 보안 주체를 서비스 주체라고 합니다.

Microsoft Entra ID: Microsoft Entra ID는 테넌트를 위한 디렉터리 서비스입니다. 각 디렉터리에는 하나 이상의 도메인이 있습니다. 디렉터리는 연결된 여러 구독을 가질 수 있지만 오직 하나의 테넌트만을 가질 수 있습니다.

Azure 테넌트 ID: 테넌트 ID는 Azure 구독에서 Microsoft Entra 인스턴스를 식별하는 고유한 방법입니다.

관리 ID: Azure Key Vault는 자격 증명과 기타 키 및 비밀을 안전하게 저장하는 방법을 제공하지만 이러한 자격 증명/키/비밀을 검색하려면 코드가 Key Vault에 인증해야 합니다. 관리 ID를 사용하면 Microsoft Entra ID에서 Azure 서비스에 자동으로 관리 ID를 제공하여 이 문제를 더 간단하게 해결할 수 있습니다. 이 ID를 사용하면 코드에 자격 증명이 없어도 Key Vault 또는 Microsoft Entra 인증을 지원하는 모든 서비스에 인증할 수 있습니다.

인증

Key Vault로 작업을 수행하려면 우선 인증을 받아야 합니다. Key Vault에 인증하는 방법에는 세 가지가 있습니다.

  • Azure 리소스의 관리 ID: Azure에서 가상 머신에 앱을 배포하는 경우, Key Vault에 액세스할 수 있는 가상 머신에 ID를 할당할 수 있습니다. 다른 Azure 리소스에 ID를 할당할 수도 있습니다. 이런 방식의 이점은 앱 또는 서비스에서 첫 번째 비밀의 순환을 관리하지 않는다는 점입니다. ID가 Azure에서 자동으로 회전됩니다. 이 접근 방식은 모범 사례로 권장됩니다.
  • 서비스 주체 및 인증서: Key Vault에 액세스할 수 있는 서비스 주체 및 연결된 인증서를 사용할 수 있습니다. 애플리케이션 소유자나 개발자가 인증서를 순환해야 하므로 이 방법은 권장되지 않습니다.
  • 서비스 주체 및 비밀: 서비스 주체 및 비밀을 사용하여 Key Vault에 인증할 수 있지만 권장하지 않습니다. Key Vault에서 인증을 받는 데 사용하는 부트스트랩 암호를 자동으로 순환하는 것은 어렵습니다.

전송 중 데이터 암호화

Azure Key Vault는 TLS(전송 계층 보안) 프로토콜을 적용하여 Azure Key Vault와 클라이언트 사이를 이동할 때 데이터를 보호합니다. 클라이언트는 Azure Key Vault와 TLS 연결을 협상합니다. TLS는 강력한 인증, 메시지 개인 정보 및 무결성(메시지 변조, 가로채기 및 위조의 검색 가능), 상호 운용성, 알고리즘 유연성, 배포 및 사용 편의성을 제공합니다.

PFS(Perfect Forward Secrecy)는 고유한 키로 고객의 클라이언트 시스템과 Microsoft 클라우드 서비스 간의 연결을 보호합니다. 또한 연결은 RSA(Rivest-Shamir-Adleman) 기반 2,048비트 암호화 키 길이를 사용합니다. 이러한 조합을 통해 누군가가 전송 중 데이터를 가로채거나 액세스하기 어렵게 할 수 있습니다.

Key Vault 역할

다음 표에서 키 자격 증명 모음이 개발자와 보안 관리자의 요구를 충족하도록 도와주는 방법을 보다 잘 이해할 수 있습니다.

역할 문제 설명 Azure Key Vault로 해결됨
Azure 애플리케이션용 개발자 "서명 및 암호화를 위해 키를 사용하는 Azure용 애플리케이션을 작성하려고 합니다. 하지만 솔루션이 지리적으로 분산된 애플리케이션에 적합하도록 이러한 키를 애플리케이션 외부에 두려고 합니다.

직접 코드를 작성하지 않고도 이러한 키와 비밀을 보호하려고 합니다. 또한 이러한 키와 비밀을 내 애플리케이션에서 최적의 성능으로 사용할 수 있게 하려고 합니다."
√ 키를 자격 증명 모음에 저장하고 필요할 때 URI로 호출합니다.

√ Azure에서는 업계 표준 알고리즘, 키 길이 및 하드웨어 보안 모듈을 사용하여 키를 보호합니다.

√ 애플리케이션과 동일한 Azure 데이터 센터에 상주하는 HSM에서 키를 처리합니다. 이 방법은 온-프레미스와 같이 별도의 위치에 있는 키보다 안정성이 뛰어나 대기 시간이 줄어 듭니다.
SaaS(Software as a Service) 개발자 "내 고객의 테넌트 키와 비밀에 대한 책임 또는 잠재적인 법적 책임을 원하지 않습니다.

핵심 소프트웨어 기능을 제공하는 일에 최선을 다해 집중할 수 있도록 고객이 키를 소유하고 관리하기를 원합니다."
√ 고객은 Azure에서 고유한 키를 가져오고 관리할 수 있습니다. SaaS(Software as a Service) 애플리케이션이 해당 고객의 키를 사용하여 암호화 작업을 수행해야 하는 경우 Key Vault 애플리케이션을 대신하여 이러한 작업을 수행합니다. 애플리케이션에서 고객의 키를 표시하지 않습니다.
수석 보안 책임자(CSO) "당사 애플리케이션이 보안 키 관리를 위해 FIPS(Federal Information Processing Standards) 140-2 Level 2 또는 FIPS 140-2 Level 3 HSM을 준수하는지 알고 싶습니다.

내 조직이 키 수명 주기를 제어하고 키 사용을 모니터링할 수 있는지 확인하고 싶습니다.

여러 Azure 서비스 및 리소스를 사용하더라도, Azure의 단일 위치에서 키를 관리하고 싶습니다."
FIPS(Federal Information Processing Standards) 140-2 수준 2 검증 HSM에 대한 자격 증명 모음을 선택합니다.
√ FIPS 140-2 수준 3 유효성 검사된 HSM에 대해 관리형 HSM 풀을 선택합니다.

√ Key Vault는 Microsoft에서 키를 보거나 추출할 수 없게 설계되어 있습니다.
√ 키 사용은 거의 실시간으로 기록됩니다.

√ Azure에 얼마나 많은 자격 증명 모음이 있는지, 지원되는 영역 및 사용하는 애플리케이션과 관계 없이 자격 증명 모음은 단일 인터페이스를 제공합니다.

Azure를 구독하는 사용자는 주요 자격 증명 모음을 만들고 사용할 수 있습니다. Key Vault에는 개발자와 보안 관리자의 혜택이 있지만, 다른 Azure 서비스를 관리하는 조직의 관리자가 구현하고 관리할 수 있습니다. 예를 들어 관리자는 Azure 구독을 사용하여 로그인하고, 키를 저장할 조직에 대한 자격 증명 모음을 만든 후, 다음과 같은 운영 테스크를 담당할 수 있습니다.

  • 키 또는 비밀 만들기 또는 가져오기
  • 키 또는 비밀 취소 또는 삭제
  • 사용자 또는 애플리케이션이 키 자격 증명 모음에 액세스하도록 권한을 부여하므로 해당 키 및 비밀을 관리하거나 사용할 수 있습니다.
  • 구성 키 용도(예: 서명 또는 암호화)
  • 키 사용량 모니터링

Azure 구독이 있는 관리자의 예를 보여 주는 다이어그램은 자격 증명 모음 및 키를 만들고 관리합니다.