From 9a7d5a2c765a01a45ffedd94ca0dce24c0e6bbce Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 26 Feb 2025 01:02:12 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-services/az-sql.md'] --- .../azure-security/az-services/az-sql.md | 76 +++++++++++++------ 1 file changed, 51 insertions(+), 25 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-services/az-sql.md b/src/pentesting-cloud/azure-security/az-services/az-sql.md index f2fc792d7..1810d4754 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-sql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-sql.md @@ -6,11 +6,11 @@ Azure SQL은 **Azure 클라우드의 SQL Server 데이터베이스 엔진**을 사용하는 관리형, 안전하고 지능적인 제품군입니다. 이는 서버의 물리적 관리에 대해 걱정할 필요가 없으며, 데이터 관리에 집중할 수 있음을 의미합니다. -Azure SQL은 네 가지 주요 제공 사항으로 구성됩니다: +Azure SQL은 네 가지 주요 제공 항목으로 구성됩니다: 1. **Azure SQL Server**: SQL Server 데이터베이스의 **배포 및 관리**를 위해 필요한 서버입니다. 2. **Azure SQL Database**: Azure 클라우드에서 개별 데이터베이스를 호스팅할 수 있는 **완전 관리형 데이터베이스 서비스**입니다. -3. **Azure SQL Managed Instance**: 대규모 전체 SQL Server 인스턴스 범위 배포를 위한 것입니다. +3. **Azure SQL Managed Instance**: 더 큰 규모의 전체 SQL Server 인스턴스 범위 배포를 위한 것입니다. 4. **Azure SQL Server on Azure VMs**: 운영 체제와 SQL Server 인스턴스에 대한 **제어**를 원하는 아키텍처에 가장 적합합니다. ### SQL Server 보안 기능 @@ -19,28 +19,54 @@ Azure SQL은 네 가지 주요 제공 사항으로 구성됩니다: - 공용 엔드포인트(특정 네트워크에 대한 접근 제한 가능). - 개인 엔드포인트. -- 도메인 이름에 따라 연결을 제한할 수도 있습니다. -- Azure 서비스가 접근할 수 있도록 허용할 수도 있습니다(예: 포털에서 쿼리 편집기를 사용하거나 Azure VM이 연결할 수 있도록 허용). +- 도메인 이름에 따라 연결을 제한하는 것도 가능합니다. +- Azure 서비스가 접근할 수 있도록 허용하는 것도 가능합니다(예: 포털에서 쿼리 편집기를 사용하거나 Azure VM이 연결하도록 허용). **인증 방법:** -- Microsoft **Entra 전용** 인증: 서비스에 접근할 Entra 주체를 지정해야 합니다. +- Microsoft **Entra-only** 인증: 서비스에 접근할 Entra 주체를 지정해야 합니다. - **SQL 및 Microsoft Entra** 인증: 사용자 이름과 비밀번호를 사용하는 전통적인 SQL 인증과 Microsoft Entra가 함께 사용됩니다. -- **SQL 전용** 인증: 데이터베이스 사용자만을 통해 접근을 허용합니다. +- **SQL만** 인증: 데이터베이스 사용자만을 통해 접근을 허용합니다. SQL 인증이 허용되는 경우 관리 사용자(사용자 이름 + 비밀번호)를 지정해야 하며, Entra ID 인증이 선택된 경우 최소한 하나의 관리 접근 권한이 있는 주체를 지정해야 합니다. **암호화:** - "투명 데이터 암호화"라고 하며, 데이터베이스, 백업 및 로그를 정지 상태에서 암호화합니다. -- 항상 기본적으로 Azure 관리 키가 사용되지만 고객 관리 암호화 키(CMEK)도 사용할 수 있습니다. +- 항상 기본적으로 Azure 관리 키가 사용되지만, 고객 관리 암호화 키(CMEK)도 사용할 수 있습니다. **관리형 ID:** - 시스템 및 사용자 관리 MI를 할당할 수 있습니다. - 암호화 키에 접근하는 데 사용됩니다(사용되는 경우 CMEK) 및 데이터베이스의 다른 서비스에 접근하는 데 사용됩니다. -- 여러 UMI가 할당된 경우 사용할 기본 UMI를 지정할 수 있습니다. -- 테넌트 간 접근을 위한 연합 클라이언트 ID를 구성할 수 있습니다. +- 데이터베이스에서 접근할 수 있는 Azure 서비스의 몇 가지 예는 [이 문서 페이지](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql)를 확인하세요. +- 하나 이상의 UMI가 할당된 경우 사용할 기본 UMI를 지정할 수 있습니다. +- 크로스 테넌트 접근을 위한 연합 클라이언트 ID를 구성할 수 있습니다. +SQL 데이터베이스에서 blob 저장소 내부의 정보에 접근하기 위한 몇 가지 명령: +```sql +-- Create a credential for the managed identity +CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential] +WITH IDENTITY = 'Managed Identity'; +GO + +-- Create an external data source pointing to the blob storage to access +CREATE EXTERNAL DATA SOURCE ManagedIdentity +WITH ( +TYPE = BLOB_STORAGE, +LOCATION = 'https://testsqlidentity.blob.core.windows.net/sqlcontainer', +CREDENTIAL = ManagedIdentityCredential +); +GO + +-- Read a file from ths storage and return it +SELECT * +FROM OPENROWSET( +BULK 'message.txt', +DATA_SOURCE = 'ManagedIdentity', +SINGLE_CLOB +) AS DataFile; +GO +``` **Microsoft Defender:** - "잠재적인 데이터베이스 취약점을 완화하고 비정상적인 활동을 감지하는 데 유용합니다." @@ -54,16 +80,16 @@ SQL 인증이 허용되는 경우 관리 사용자(사용자 이름 + 비밀번 ## Azure SQL Database -**Azure SQL Database**는 확장 가능하고 안전한 관계형 데이터베이스 솔루션을 제공하는 **완전 관리형 데이터베이스 플랫폼 서비스(PaaS)**입니다. 최신 SQL Server 기술을 기반으로 하며 인프라 관리의 필요성을 없애 클라우드 기반 애플리케이션에 인기 있는 선택입니다. +**Azure SQL Database**는 **완전 관리형 데이터베이스 플랫폼 서비스(PaaS)**로, 확장 가능하고 안전한 관계형 데이터베이스 솔루션을 제공합니다. 최신 SQL Server 기술을 기반으로 하며 인프라 관리의 필요성을 없애, 클라우드 기반 애플리케이션에 인기 있는 선택입니다. SQL 데이터베이스를 생성하려면 호스팅될 SQL 서버를 지정해야 합니다. ### SQL 데이터베이스 보안 기능 -- **항상 최신 상태**: 최신 안정 버전의 SQL Server에서 실행되며 새로운 기능과 패치를 자동으로 받습니다. +- **항상 최신 상태**: 최신 안정 버전의 SQL Server에서 실행되며 새로운 기능과 패치를 자동으로 수신합니다. - **상속된 SQL Server 보안 기능:** -- 인증(SQL 및/또는 Entra ID) -- 할당된 관리형 ID +- 인증(SQ 및/또는 Entra ID) +- 할당된 관리 ID - 네트워크 제한 - 암호화 - 백업 @@ -75,27 +101,27 @@ SQL 데이터베이스는 **탄력적 풀**의 일부가 될 수 있습니다. #### Azure SQL 열 수준 보안(마스킹) 및 행 수준 보안 -**Azure SQL의 동적** 데이터 마스킹은 **민감한 정보를 보호하기 위해** 무단 사용자로부터 숨기는 기능입니다. 실제 데이터를 변경하는 대신 표시된 데이터를 동적으로 마스킹하여 신용 카드 번호와 같은 민감한 세부 정보가 가려지도록 합니다. +**Azure SQL의 동적** 데이터 마스킹은 **민감한 정보를 보호하기 위해** 무단 사용자로부터 숨기는 기능입니다. 실제 데이터를 변경하는 대신, 표시된 데이터를 동적으로 마스킹하여 신용 카드 번호와 같은 민감한 세부 정보가 가려지도록 합니다. **동적 데이터 마스킹**은 마스킹되지 않은 사용자(이 사용자들은 지정되어야 함)와 관리자를 제외한 모든 사용자에게 영향을 미칩니다. 동적 데이터 마스킹에서 면제되는 SQL 사용자를 지정하는 구성 옵션이 있으며, **관리자는 항상 제외됩니다**. -**Azure SQL 행 수준 보안(RLS)**은 **사용자가 볼 수 있거나 수정할 수 있는 행을 제어하는 기능**으로, 각 사용자가 자신과 관련된 데이터만 볼 수 있도록 보장합니다. 필터 또는 차단 조건으로 보안 정책을 생성함으로써 조직은 데이터베이스 수준에서 세밀한 접근을 시행할 수 있습니다. +**Azure SQL 행 수준 보안(RLS)**은 **사용자가 볼 수 있거나 수정할 수 있는 행을 제어하는 기능**으로, 각 사용자가 자신과 관련된 데이터만 볼 수 있도록 보장합니다. 필터 또는 차단 술어로 보안 정책을 생성함으로써 조직은 데이터베이스 수준에서 세밀한 접근을 시행할 수 있습니다. -### Azure SQL Managed Instance +### Azure SQL 관리 인스턴스 -**Azure SQL Managed Instances**는 대규모 전체 SQL Server 인스턴스 범위 배포를 위한 것입니다. 최신 SQL Server 온프레미스(Enterprise Edition) 데이터베이스 엔진과 거의 100% 호환성을 제공하며, 일반적인 보안 문제를 해결하는 네이티브 가상 네트워크(VNet) 구현과 온프레미스 SQL Server 고객에게 유리한 비즈니스 모델을 제공합니다. +**Azure SQL 관리 인스턴스**는 대규모 전체 SQL Server 인스턴스 범위 배포를 위한 것입니다. 최신 SQL Server 온프레미스(Enterprise Edition) 데이터베이스 엔진과 거의 100% 호환성을 제공하며, 일반적인 보안 문제를 해결하는 네이티브 가상 네트워크(VNet) 구현과 온프레미스 SQL Server 고객에게 유리한 비즈니스 모델을 제공합니다. ### Azure SQL 가상 머신 -**Azure SQL Virtual Machines**는 **운영 체제를 제어**하고 SQL Server 인스턴스를 관리할 수 있게 해주며, SQL 서버를 실행하는 VM 서비스에서 VM이 생성됩니다. +**Azure SQL 가상 머신**은 **운영 체제**와 SQL Server 인스턴스를 **제어할 수 있게 해줍니다**, SQL 서버를 실행하는 VM 서비스에서 VM이 생성됩니다. -SQL 가상 머신이 생성될 때 SQL 서버를 호스팅할 VM의 **모든 설정을 선택할 수 있습니다**(VM 수업에서 보여준 대로). -- 이는 VM이 일부 VNet에 접근하고, **관리형 ID가 연결**될 수 있으며, 파일 공유가 마운트될 수 있음을 의미합니다… SQL에서 VM으로의 **피벗이 매우 흥미롭습니다**. -- 또한 SQL이 특정 키 볼트에 접근할 수 있도록 **앱 ID 및 비밀을 구성**할 수 있으며, 이 키 볼트는 민감한 정보를 포함할 수 있습니다. +SQL 가상 머신이 생성될 때 SQL 서버를 호스팅할 VM의 모든 설정을 **선택할 수 있습니다**(VM 수업에서 보여준 대로). +- 이는 VM이 일부 VNet에 접근하고, **관리 ID가 연결**될 수 있으며, 파일 공유가 마운트될 수 있음을 의미합니다… SQL에서 VM으로의 **피벗이 매우 흥미롭습니다**. +- 또한, SQL이 특정 키 볼트에 접근할 수 있도록 **앱 ID 및 비밀을 구성**할 수 있으며, 이 키 볼트에는 민감한 정보가 포함될 수 있습니다. 자동 SQL 업데이트, 자동 백업, Entra ID 인증 및 다른 SQL 서비스의 대부분 기능과 같은 것들을 구성할 수도 있습니다. -## Enumeration +## 열거 {{#tabs}} {{#tab name="az cli"}} @@ -232,7 +258,7 @@ Get-AzSqlVM {{#endtab}} {{#endtabs}} -추가적으로 데이터베이스 내에서 Dynamic Data Masking 및 Row Level 정책을 열거하려면, 다음 쿼리를 사용할 수 있습니다: +추가로 데이터베이스 내에서 Dynamic Data Masking 및 Row Level 정책을 열거하고 싶다면, 다음과 같이 쿼리할 수 있습니다: ```sql --Enumerates the masked columns SELECT @@ -278,7 +304,7 @@ $Connection.Close() invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;' ``` -데이터베이스에 접근하기 위해 sqlcmd를 사용할 수도 있습니다. 서버가 공용 연결을 허용하는지 아는 것이 중요합니다 `az sql server show --name --resource-group ` 그리고 방화벽 규칙이 우리의 IP 접근을 허용하는지도 확인해야 합니다: +데이터베이스에 접근하기 위해 sqlcmd를 사용할 수도 있습니다. 서버가 공용 연결을 허용하는지 아는 것이 중요합니다 `az sql server show --name --resource-group ` 그리고 방화벽 규칙이 우리의 IP가 접근할 수 있도록 허용하는지도 확인해야 합니다: ```bash sqlcmd -S .database.windows.net -U -P -d ``` @@ -304,7 +330,7 @@ sqlcmd -S .database.windows.net -U -P