다음을 통해 공유


Azure Storage 연결 문자열 구성

연결 문자열에는 애플리케이션이 공유 키 인증을 사용하여 런타임에 Azure Storage 계정의 데이터에 액세스하는 데 필요한 인증 정보가 포함되어 있습니다. 다음과 같은 작업을 수행하도록 연결 문자열을 구성할 수 있습니다.

  • Azurite 스토리지 에뮬레이터에 연결합니다.
  • Azure의 스토리지 계정에 액세스
  • SAS(공유 액세스 서명)를 통해 Azure의 지정된 리소스에 액세스

계정 액세스 키를 보고 연결 문자열을 복사하는 방법을 알아보려면 스토리지 계정 액세스 키 관리를 참조하세요.

Important

최적의 보안을 위해, 가능하면 관리 ID와 함께 Microsoft Entra ID를 사용하여 Blob, 큐 및 테이블 데이터에 대한 요청에 권한을 부여하는 것이 좋습니다. Microsoft Entra ID 및 관리 ID를 사용한 권한 부여는 공유 키 권한 부여보다 뛰어난 보안과 사용 편의성을 제공합니다. 관리 ID에 대한 자세한 내용은 Azure 리소스에 대한 관리 ID란?을 참조하세요. .NET 애플리케이션에 대해 관리 ID를 활성화하고 사용하는 방법에 대한 예는 .NET을 사용하여 Azure 리소스에 대해 Azure 호스팅 앱 인증을 참조하세요.

온-프레미스 애플리케이션과 같이 Azure 외부에서 호스트되는 리소스의 경우 Azure Arc를 통해 관리 ID를 사용할 수 있습니다. 예를 들어 Azure Arc 지원 서버에서 실행되는 앱은 관리 ID를 사용하여 Azure 서비스에 연결할 수 있습니다. 자세히 알아보려면 Azure Arc 지원 서버를 사용하여 Azure 리소스에 대해 인증을 참조하세요.

SAS(공유 액세스 서명)가 사용되는 시나리오의 경우 사용자 위임 SAS를 사용하는 것이 좋습니다. 사용자 위임 SAS는 계정 키 대신 Microsoft Entra 자격 증명으로 보호됩니다. 공유 액세스 서명에 대해 알아보려면 공유 액세스 서명을 사용하여 데이터에 대한 제한된 액세스 권한 부여를 참조하세요. .NET을 사용하여 사용자 위임 SAS를 만들고 사용하는 방법에 대한 예는 .NET을 사용하여 Blob에 대한 사용자 위임 SAS 만들기를 참조하세요.

액세스 키 보호

스토리지 계정 액세스 키는 스토리지 계정 데이터에 대한 모든 권한과 SAS 토큰 생성 기능을 제공합니다. 항상 액세스 키를 보호해야 합니다. Azure Key Vault를 사용하여 키를 안전하게 관리하고 회전합니다. 공유 키에 대한 액세스는 사용자에게 스토리지 계정의 데이터에 대한 모든 권한을 부여합니다. 공유 키에 대한 액세스는 신중하게 제한되고 모니터링되어야 합니다. Microsoft Entra ID 기반 권한 부여를 사용할 수 없는 시나리오에서는 액세스 범위가 제한된 사용자 위임 SAS 토큰을 사용합니다. 액세스 키를 하드 코딩하거나 다른 사용자가 액세스할 수 있는 일반 텍스트로 저장하지 않도록 합니다. 키가 손상되었다고 생각되면 키를 교체하세요.

Important

사용자가 공유 키를 사용하여 스토리지 계정의 데이터에 액세스하지 못하도록 하려면 스토리지 계정에 대한 공유 키 권한 부여를 허용하지 않을 수 있습니다. 최소한의 권한이 필요한 데이터에 대한 세분화된 액세스는 보안 모범 사례로 권장됩니다. OAuth를 지원하는 시나리오에는 관리 ID를 사용하는 Microsoft Entra ID 기반 권한 부여를 사용해야 합니다. SMB를 통한 Azure Files에는 Kerberos 또는 SMTP를 사용해야 합니다. REST를 통한 Azure Files 경우에는 SAS 토큰을 사용할 수 있습니다. 의도하지 않은 사용을 방지하기 위해 필요하지 않은 경우 공유 키 액세스를 사용하지 않도록 설정해야 합니다. 자세한 내용은 Azure Storage 계정에 대한 공유 키 권한 부여 방지를 참조하세요.

Microsoft Entra 조건부 액세스 정책을 사용하여 Azure Storage 계정을 보호하려면 스토리지 계정에 대한 공유 키 권한 부여를 허용하지 않아야 합니다.

공유 키 액세스를 사용하지 않도록 설정했음에도 진단 로그에 공유 키 권한 부여가 보고된 경우, 이는 신뢰할 수 있는 액세스가 스토리지에 액세스하는 데 사용되고 있음을 나타냅니다. 자세한 내용은 Microsoft Entra 테넌트에 등록된 리소스에 대한 신뢰할 수 있는 액세스를 참조하세요.

연결 문자열 제공

Azure Storage에 대해 만들어진 요청 권한을 부여하려면 런타임에 애플리케이션이 연결 문자열에 액세스해야 합니다. 계정 액세스 키 또는 연결 문자열을 저장하기 위한 여러 가지 옵션이 있습니다.

  • 계정 키를 Azure Key Vault에 안전하게 저장할 수 있습니다. 자세한 내용은 Azure Key Vault 관리 스토리지 계정 키 정보를 참조하세요.
  • 환경 변수에 연결 문자열을 저장할 수 있습니다.
  • 애플리케이션은 연결 문자열을 app.config 또는 web.config 파일에 저장할 수 있습니다. 이러한 파일의 AppSettings 섹션에 연결 문자열을 추가합니다.

Warning

계정 액세스 키 또는 연결 문자열을 명확한 텍스트로 저장하면 보안 위험이 있으므로 권장되지 않습니다. 계정 키를 암호화된 형식으로 저장하거나 스토리지 계정에 액세스하기 위해 Microsoft Entra 권한 부여를 사용하도록 애플리케이션을 마이그레이션합니다.

Azurite용 연결 문자열 구성

에뮬레이터는 단일 고정 계정과 공유 키 인증에 대해 알려진 인증 키를 지원합니다. 에뮬레이터에서 사용할 수 있는 공유 키 자격 증명은 이 계정과 키뿐입니다. 화면은 다음과 같습니다.

Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

참고 항목

에뮬레이터에서 지원하는 인증 키는 클라이언트 인증 코드의 기능을 테스트할 때만 사용할 수 있습니다. 보안 기능은 제공하지 않습니다. 에뮬레이터에서 프로덕션 스토리지 계정과 키를 사용할 수 없습니다. 개발 계정을 프로덕션 데이터에 사용해서는 안 됩니다.

에뮬레이터는 HTTP를 통해서만 연결을 지원합니다. 그러나 프로덕션 Azure Storage 계정에서 리소스에 액세스하기 위한 프로토콜로 HTTPS를 사용하는 것이 좋습니다.

바로 가기를 사용하여 에뮬레이터 계정에 연결

애플리케이션에서 에뮬레이터에 연결하는 가장 쉬운 방법은 바로 가기 UseDevelopmentStorage=true를 참조하는 애플리케이션의 구성 파일에서 연결 문자열을 구성하는 것입니다. 바로 가기는 모든 Azure Storage 서비스에 대한 계정 이름, 계정 키 및 에뮬레이터 엔드포인트를 지정하는 에뮬레이터의 전체 연결 문자열에 해당합니다.

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;

다음 .NET 코드 조각에서는 연결 문자열을 사용하는 메서드에서 바로 가기를 사용하는 방법을 보여줍니다. 예를 들어 BlobContainerClient(String, String) 생성자는 연결 문자열을 사용합니다.

BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();

코드 조각의 코드를 호출하기 전에 에뮬레이터가 실행되고 있는지 확인합니다.

Azurite에 대한 자세한 내용은 로컬 Azure Storage 개발에 Azurite 에뮬레이터 사용을 참조하세요.

Azure Storage 계정에 대한 연결 문자열 구성

Azure Storage 계정에 연결 문자열을 만들려면 다음 형식을 사용 합니다. HTTPS(권장) 또는 HTTP를 통해 스토리지 계정에 연결할지 여부를 나타내며, myAccountName을 스토리지 계정의 이름으로 바꾸고, myAccountKey를 계정 액세스 키로 바꿉니다.

DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey

예를 들어 연결 문자열은 다음과 유사할 수 있습니다.

DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>

Azure Storage는 연결 문자열에서 HTTP 및 HTTPS를 모두 지원하지만 HTTPS를 사용하는 것이 좋습니다.

스토리지 계정의 연결 문자열은 Azure Portal에서 찾을 수 있습니다. 스토리지 계정의 설정에서 보안 + 네트워킹>액세스 키로 이동하여 주 및 보조 액세스 키 모두에 대한 연결 문자열을 확인합니다.

공유 액세스 서명을 사용하여 연결 문자열 만들기

스토리지 계정에서 리소스에 대한 액세스를 허용하는 공유 액세스 서명(SAS) URL을 보유하는 경우 연결 문자열에 SAS를 사용할 수 있습니다. SAS가 요청을 인증하는 데 필요한 정보를 포함하므로 SAS로 시작되는 연결 문자열은 프로토콜, 서비스 엔드포인트 및 필요한 자격 증명을 제공하여 리소스에 액세스합니다.

공유 액세스 서명을 포함하는 연결 문자열을 만들려면 다음과 같은 형식의 문자열을 지정합니다.

BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken

각 서비스 엔드포인트는 선택 사항이지만 연결 문자열에는 최소한 하나 이상이 포함되어야 합니다.

참고 항목

SAS와 함께 HTTPS를 사용하는 것이 가장 좋습니다.

구성 파일에서 연결 문자열의 SAS를 지정하는 경우 URL의 특수 문자 인코딩이 필요할 수 있습니다.

서비스 SAS 예

다음은 Blob Storage에 대한 서비스 SAS를 포함하는 연결 문자열의 예제입니다.

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

그리고 다음은 URL 인코딩을 사용하는 동일한 연결 문자열의 예제입니다.

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&amp;sr=b&amp;si=tutorial-policy-635959936145100803&amp;sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

계정 SAS 예

다음은 Blob 및 File Storage에 대한 계정 SAS를 포함하는 연결 문자열의 예제입니다. 두 서비스에 대한 엔드포인트가 지정됩니다.

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl

그리고 다음은 URL 인코딩을 사용하는 동일한 연결 문자열의 예제입니다.

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&amp;sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&amp;spr=https&amp;st=2016-04-12T03%3A24%3A31Z&amp;se=2016-04-13T03%3A29%3A31Z&amp;srt=s&amp;ss=bf&amp;sp=rwl

명시적 스토리지 엔드포인트에 대한 연결 문자열 만들기

기본 엔드포인트를 사용하는 대신 연결 문자열에서 명시적 서비스 엔드포인트를 지정할 수 있습니다. 명시적 Blob 엔드포인트를 지정하는 연결 문자열을 만들려면 다음 형식으로 프로토콜 사양(HTTPS(권장) 또는 HTTP)을 포함하는 전체 서비스 엔드포인트를 각 서비스에 대해 지정합니다.

DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey

명시적 엔드포인트를 지정하고자 할 수 있는 하나의 시나리오로서 Blob Storage 엔드포인트를 사용자 지정 도메인에 매핑한 경우가 있습니다. 이 경우 연결 문자열에 있는 Blob Storage에 대해 사용자 지정 엔드포인트를 지정할 수 있습니다. 애플리케이션에서 다른 서비스에 대한 기본 엔드포인트를 사용하는 경우 선택적으로 지정할 수 있습니다.

다음은 Blob service에 대한 명시적 엔드포인트를 지정하는 연결 문자열의 예제입니다.

# Blob endpoint only
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
AccountName=storagesample;
AccountKey=<account-key>

이 예제에서는 Blob service에 대한 사용자 지정 도메인을 비롯하여 모든 서비스에 대해 명시적 엔드포인트를 지정합니다.

# All service endpoints
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
FileEndpoint=https://myaccount.file.core.windows.net;
QueueEndpoint=https://myaccount.queue.core.windows.net;
TableEndpoint=https://myaccount.table.core.windows.net;
AccountName=storagesample;
AccountKey=<account-key>

연결 문자열에 있는 엔드포인트 값은 스토리지 서비스의 요청 URI를 생성하는 데 사용되며 코드로 반환되는 URI의 형식을 지정합니다.

스토리지 엔드포인트를 사용자 지정 도메인에 매핑하고 연결 문자열에서 엔드포인트를 생략하면 해당 연결 문자열을 사용할 수 없어서 코드로부터 해당 서비스의 데이터에 액세스할 수 없습니다.

Azure Storage에 대한 사용자 지정 도메인을 구성하는 방법에 대한 자세한 내용은 사용자 지정 도메인을 Azure Blob Storage 엔드포인트에 매핑을 참조하세요.

Important

연결 문자열의 서비스 엔드포인트 값은 https://(권장) 또는 http://를 포함하는 올바른 형식의 URI여야 합니다.

엔드포인트 접미사를 사용하여 연결 문자열 만들기

21Vianet 또는 Azure Government가 운영하는 Microsoft Azure와 같이 다른 엔드포인트 접미사를 사용하여 지역이나 인스턴스에 스토리지 서비스에 대한 연결 문자열을 만들려면 다음 연결 문자열 형식을 사용합니다. HTTPS(권장) 또는 HTTP를 통해 스토리지 계정에 연결할지 여부를 표시하며, myAccountName을 스토리지 계정의 이름으로 바꾸고, myAccountKey를 계정 액세스 키로 바꾸고, mySuffix을 URI 접미사로 바꿉니다.

DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;

다음은 21Vianet에서 운영하는 Azure의 스토리지 서비스에 대한 연결 문자열 예입니다.

DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;

공유 키를 사용하여 액세스 권한 부여

계정 키 또는 연결 문자열을 사용하여 Azure Storage에 대한 액세스 권한을 부여하는 방법을 알아보려면 다음 문서 중 하나를 참조하세요.

다음 단계