connection string은 공유 키 권한 부여를 사용하여 런타임에 애플리케이션이 Azure Storage 계정의 데이터에 액세스하는 데 필요한 권한 부여 정보를 포함합니다. 다음과 같은 작업을 수행하도록 연결 문자열을 구성할 수 있습니다.
- Azurite 스토리지 에뮬레이터에 연결합니다.
- Azure 스토리지 계정에 액세스합니다.
- SAS(공유 액세스 서명)를 통해 Azure 지정된 리소스에 액세스합니다.
계정 액세스 키를 보고 connection string 복사하는 방법을 알아보려면 스토리지 계정 액세스 키 관리를 참조하세요.
중요
최적의 보안을 위해 가능한 경우 Microsoft에서는 Microsoft Entra ID와 관리 ID를 사용하여 Blob, 큐, 테이블 데이터에 대한 요청을 승인할 것을 권장합니다. Microsoft Entra ID 및 관리 ID를 사용한 권한 부여는 공유 키 권한 부여를 통해 뛰어난 보안 및 사용 편의성을 제공합니다. 관리 ID에 대한 자세한 내용은 Azure 리소스에 대한 관리 ID는 어느 정도인가 참조하세요. .NET 애플리케이션에 대해 관리 ID를 활성화하고 사용하는 방법의 예는 Azure에서 호스팅되는 앱을 .NET으로 Azure 리소스에 인증하는 방법을 참조하세요.
온-프레미스 애플리케이션과 같이 Azure 외부에서 호스트되는 리소스의 경우 Azure Arc 통해 관리 ID를 사용할 수 있습니다. 예를 들어 Azure Arc 사용 가능한 서버에서 실행되는 앱은 관리 ID를 사용하여 Azure 서비스에 연결할 수 있습니다. 자세한 내용은 Azure Arc 사용 가능한 서버를 사용하여 Azure 리소스에 대한 인증 참조하세요.
SAS(공유 액세스 서명)가 사용되는 시나리오의 경우 Microsoft 사용자 위임 SAS를 사용하는 것이 좋습니다. 사용자 위임 SAS는 계정 키 대신 Microsoft Entra 자격 증명으로 보호됩니다. 공유 액세스 서명에 대해 알아보려면 공유 액세스 서명을 사용하여 데이터에 대한 제한된 액세스 권한 부여를 참조하세요. .NET을 사용하여 사용자 위임 SAS를 생성하고 사용하는 방법의 예는 .NET을 사용하여 blob에 대한 사용자 위임 SAS 만들기를 참조하세요.
액세스 키 보호
스토리지 계정 액세스 키는 스토리지 계정 데이터에 대한 모든 권한과 SAS 토큰 생성 기능을 제공합니다. 항상 액세스 키를 보호해야 합니다. Azure Key Vault 사용하여 키를 안전하게 관리하고 회전합니다. 공유 키에 대한 액세스는 사용자에게 스토리지 계정의 데이터에 대한 모든 권한을 부여합니다. 공유 키에 대한 액세스는 신중하게 제한되고 모니터링되어야 합니다. Microsoft Entra ID 기반 권한 부여를 사용할 수 없는 시나리오에서는 액세스 범위가 제한된 사용자 위임 SAS 토큰을 사용합니다. 액세스 키를 하드 코딩하거나 다른 사용자가 액세스할 수 있는 일반 텍스트로 저장하지 않도록 합니다. 키가 손상되었을 가능성이 있다고 생각되면 키를 교체하세요.
중요
사용자가 공유 키를 사용하여 스토리지 계정의 데이터에 액세스하지 못하도록 하려면 스토리지 계정에 대한 공유 키 권한 부여를 허용하지 않을 수 있습니다. 최소한의 권한이 필요한 데이터에 대한 세분화된 액세스는 보안 모범 사례로 권장됩니다. 관리 ID를 사용하는 Microsoft Entra ID 기반 권한 부여는 OAuth를 지원하는 시나리오에 사용해야 합니다. Kerberos는 SMB를 통해 Azure Files 데 사용해야 합니다. REST를 통해 Azure Files 경우 SAS 토큰을 사용할 수 있습니다. 의도하지 않은 사용을 방지하기 위해 필요하지 않은 경우 공유 키 액세스를 사용하지 않도록 설정해야 합니다. 자세한 내용은 Azure Storage 계정에 대한 공유 키 인증 방지를 참조하세요.
Microsoft Entra Conditional Access 정책을 사용하여 Azure Storage 계정을 보호하려면 스토리지 계정에 대한 공유 키 권한 부여를 허용하지 않아야 합니다.
공유 키 액세스를 사용하지 않도록 설정했음에도 진단 로그에 공유 키 권한 부여가 보고된 경우, 이는 신뢰할 수 있는 액세스가 스토리지에 액세스하는 데 사용되고 있음을 나타냅니다. 자세한 내용은 Microsoft Entra 테넌트에 등록된 리소스에 대한 신뢰할 수 있는 액세스를 참조하십시오.
연결 문자열 저장
애플리케이션은 런타임에 connection string 액세스하여 Azure Storage 요청 권한을 부여해야 합니다. 계정 액세스 키 또는 connection string을 저장할 몇 가지 옵션이 있습니다.
- Microsoft Microsoft Entra ID 사용하여 계정 키 대신 Azure Storage 대한 액세스 권한을 부여하는 것이 좋습니다. 계정 키를 사용해야 하는 경우 Azure Key Vault 안전하게 저장합니다. 자세한 내용은
Azure Storage 참조하세요. - 환경 변수에 connection string 저장할 수 있습니다.
- 애플리케이션은 connection string app.config 또는 web.config 파일에 저장할 수 있습니다. 이러한 파일의 AppSettings 섹션에 connection string 추가합니다.
경고
계정 액세스 키 또는 connection string 명확한 텍스트로 저장하면 보안 위험이 발생하며 권장되지 않습니다. 계정 키를 암호화된 형식으로 저장하거나 스토리지 계정에 액세스하기 위해 Microsoft Entra 권한 부여를 사용하도록 애플리케이션을 마이그레이션합니다.
Azurite에 대한 connection string 구성
에뮬레이터는 단일 고정 계정과 공유 키 인증에 대해 알려진 인증 키를 지원합니다. 에뮬레이터에서 사용할 수 있는 공유 키 자격 증명은 이 계정과 키뿐입니다. 다음과 같습니다.
Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
참고 사항
에뮬레이터에서 지원하는 인증 키는 클라이언트 인증 코드의 기능을 테스트할 때만 사용할 수 있습니다. 보안 기능은 제공하지 않습니다. 에뮬레이터에서 프로덕션 스토리지 계정과 키를 사용할 수 없습니다. 개발 계정을 프로덕션 데이터에 사용해서는 안 됩니다.
에뮬레이터는 HTTP를 통해서만 연결을 지원합니다. 그러나 HTTPS는 프로덕션 Azure 스토리지 계정의 리소스에 액세스하는 데 권장되는 프로토콜입니다.
바로 가기를 사용하여 에뮬레이터 계정에 연결
애플리케이션에서 에뮬레이터에 연결하는 가장 쉬운 방법은 애플리케이션의 구성 파일에서 바로 가기 UseDevelopmentStorage=true 참조하는 connection string 구성하는 것입니다. 에뮬레이터의 바로 가기는 각 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 코드 조각은 connection string 사용하는 메서드의 바로 가기를 사용하는 방법을 보여줍니다. 예를 들어 BlobContainerClient(String, String) 생성자는 connection string 사용합니다.
BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();
코드 조각의 코드를 호출하기 전에 에뮬레이터가 실행되고 있는지 확인합니다.
Azurite에 대한 자세한 내용은 로컬 Azure Storage 개발에 Azurite 에뮬레이터 사용 참조하세요.
Azure 스토리지 계정의 연결 문자열 구성
Azure 스토리지 계정에 대한 connection string 만들려면 다음 형식을 사용합니다. HTTPS(권장) 또는 HTTP를 통해 스토리지 계정에 연결할지 여부를 나타내며, myAccountName을 스토리지 계정의 이름으로 바꾸고, myAccountKey를 계정 액세스 키로 바꿉니다.
DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey
예를 들어 connection string 다음과 비슷할 수 있습니다.
DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>
Azure Storage connection string HTTP 및 HTTPS를 모두 지원하지만 HTTPS는 매우 권장됩니다.
팁
스토리지 계정의 연결 문자열은 Azure 포털 찾을 수 있습니다. 스토리지 계정의 설정에서 보안 + 네트워킹>액세스 키로 이동하여 주 및 보조 액세스 키 모두에 대한 연결 문자열을 확인합니다.
공유 액세스 서명을 사용하여 connection string 만들기
스토리지 계정의 리소스에 대한 액세스 권한을 부여하는 SAS(공유 액세스 서명) URL이 있는 경우 connection string SAS를 사용할 수 있습니다. SAS에는 요청을 인증하는 데 필요한 정보가 포함되어 있으므로 SAS를 사용하는 connection string 프로토콜, 서비스 엔드포인트 및 리소스에 액세스하는 데 필요한 자격 증명을 제공합니다.
공유 액세스 서명을 포함하는 connection string 만들려면 다음 형식으로 문자열을 지정합니다.
BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken
connection string에는 하나 이상의 엔드포인트가 반드시 포함되어야 하지만, 각 서비스 엔드포인트 자체는 선택 사항입니다.
참고 사항
SAS와 함께 HTTPS를 사용하는 것이 가장 좋습니다.
구성 파일의 connection string SAS를 지정하는 경우 URL에 특수 문자를 인코딩해야 할 수 있습니다.
서비스 SAS 예제
다음은 Blob Storage에 대한 서비스 SAS를 포함하는 connection string 예입니다.
BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
URL 인코딩을 사용하는 동일한 connection string 예는 다음과 같습니다.
BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
계정 SAS 사용 예시
다음은 Blob 및 File Storage에 대한 계정 SAS를 포함하는 connection string 예입니다. 두 서비스에 대한 엔드포인트가 지정됩니다.
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 인코딩을 사용하는 동일한 connection string 예는 다음과 같습니다.
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
명시적 스토리지 엔드포인트에 대한 connection string 만들기
기본 엔드포인트를 사용하는 대신 connection string 명시적 서비스 엔드포인트를 지정할 수 있습니다. 명시적 엔드포인트를 지정하는 connection string 만들려면 프로토콜 사양(HTTPS(권장) 또는 HTTP)을 포함하여 각 서비스에 대한 전체 서비스 엔드포인트를 다음 형식으로 지정합니다.
DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey
명시적 엔드포인트를 지정하고자 할 수 있는 하나의 시나리오로서 Blob Storage 엔드포인트를 사용자 지정 도메인에 매핑한 경우가 있습니다. 이 경우 connection string Blob Storage에 대한 사용자 지정 엔드포인트를 지정할 수 있습니다. 애플리케이션에서 다른 서비스에 대한 기본 엔드포인트를 사용하는 경우 선택적으로 지정할 수 있습니다.
다음은 Blob 서비스에 대한 명시적 엔드포인트를 지정하는 connection string 예입니다.
# 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>
connection string 엔드포인트 값은 스토리지 서비스에 대한 요청 URI를 생성하고 코드에 반환되는 URI의 형식을 지정하는 데 사용됩니다.
스토리지 엔드포인트를 사용자 지정 도메인에 매핑하고 connection string 해당 엔드포인트를 생략한 경우 해당 connection string 사용하여 코드에서 해당 서비스의 데이터에 액세스할 수 없습니다.
Azure Storage 사용자 지정 도메인을 구성하는 방법에 대한 자세한 내용은 Azure Blob Storage 엔드포인트에 사용자 지정 도메인 매핑 참조하세요.
중요
연결 문자열의 서비스 엔드포인트 값은 https://(권장) 또는 http://를 포함하는 올바른 형식의 URI여야 합니다.
엔드포인트 접미사를 사용하여 연결 문자열 만들기
Microsoft Azure가 21Vianet 또는 Azure Government에 의해 운영되는 경우처럼 서로 다른 엔드포인트 접미사가 있는 지역이나 인스턴스에서 스토리지 서비스에 대한 connection string을 만들기 위해서는, 다음과 같은 connection string 형식을 사용합니다. HTTPS(권장) 또는 HTTP를 통해 스토리지 계정에 연결할지 여부를 표시하며, myAccountName을 스토리지 계정의 이름으로 바꾸고, myAccountKey를 계정 액세스 키로 바꾸고, mySuffix을 URI 접미사로 바꿉니다.
DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;
다음은 21Vianet에서 운영하는 Azure 스토리지 서비스에 대한 connection string 예입니다.
DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;
공유 키를 사용하여 액세스 권한 부여
계정 키 또는 connection string 사용하여 Azure Storage 대한 액세스 권한을 부여하는 방법을 알아보려면 다음 문서 중 하나를 참조하세요.
- 액세스를 승인하고 .NET을 사용하여 블롭 스토리지에 연결합니다
- Java를 사용하여 액세스 권한을 부여하고 Blob Storage에 연결합니다
- JavaScript를 사용하여 액세스를 인증하고 Blob Storage 연결
- 액세스 권한을 부여하고 Python을 사용하여 Blob Storage에 연결합니다