다음을 통해 공유


Elastic Database 클라이언트 라이브러리에 액세스하는 데 사용하는 자격 증명

적용 대상: Azure SQL Database

탄력적 데이터베이스 클라이언트 라이브러리는 세 가지 다른 종류의 자격 증명을 사용하여 분할된 데이터베이스 맵 관리자에 액세스합니다. 필요에 따라서 가능한 한 액세스 수준이 가장 낮은 자격 증명을 사용합니다.

  • 관리 자격 증명: 분할된 데이터베이스 맵 관리자를 만들고 조작하는 데 사용됩니다. (용어집을 참조하세요.)
  • 액세스 자격 증명: 기존의 분할 맵 관리자에 액세스하여 분할에 대한 정보를 가져옵니다.
  • 연결 자격 증명: 분할된 데이터베이스에 연결하는 데 사용됩니다.

Azure SQL Database에서 데이터베이스 및 로그인 관리도 참조하세요.

관리 자격 증명 정보

관리 자격 증명은 분할 맵을 조작하는 애플리케이션에 대한 ShardMapManager(Java, .NET) 개체를 만드는 데 사용합니다. (예를 들어 Elastic Database 도구를 사용하여 분할된 데이터베이스 추가데이터 종속 라우팅을 참조하세요.) 탄력적인 크기의 클라이언트 라이브러리 사용자는 SQL 사용자 및 SQL 로그인을 만들고 각각에 대해 글로벌 분할된 데이터베이스 맵 데이터베이스는 물론 모든 분할된 데이터베이스 맵에 대한 읽기/쓰기 권한을 부여합니다. 이러한 자격 증명은 분할된 데이터베이스 맵에 대한 변경을 수행할 때 전역 분할된 데이터베이스 맵 및 로컬 분할된 데이터베이스 맵을 유지 관리 하는 데 사용됩니다. 예를 들어 관리 자격 증명을 사용하여 분할 맵 관리자 개체를 만듭니다(GetSqlShardMapManager(Java, .NET) 사용).

// Obtain a shard map manager.
ShardMapManager shardMapManager = ShardMapManagerFactory.GetSqlShardMapManager(smmAdminConnectionString,ShardMapManagerLoadPolicy.Lazy);

smmAdminConnectionString 변수는 관리 자격 증명을 포함하는 연결 문자열입니다. 사용자 ID와 암호는 분할 맵 데이터베이스와 개별 분할에 대한 읽기/쓰기 액세스를 제공합니다. 관리 연결 문자열은 전역 분할 맵 데이터베이스를 식별하기 위한 서버 이름과 데이터베이스 이름도 포함합니다. 이러한 용도를 위한 일반적인 연결 문자열은 다음과 같습니다.

"Server=<yourserver>.database.windows.net;Database=<yourdatabase>;User ID=<yourmgmtusername>;Password=<yourmgmtpassword>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"

“username@server” 형식의 값을 사용하지 말고, “username” 값을 사용합니다. 자격 증명은 분할된 데이터베이스 맵 관리자 데이터베이스와 각기 다른 서버에 있을 수 있는 개별 분할된 데이터베이스에 대해 모두 작동해야 하기 때문입니다.

액세스 자격 증명

분할 맵을 관리하지 않는 애플리케이션에서 분할 맵 관리자를 만들 때 전역 분할 맵에 대한 읽기 전용 권한이 있는 자격 증명을 사용합니다. 이러한 자격 증명을 갖추고 전역 분할 맵에서 검색한 정보는 데이터 종속 라우팅에 사용하고 클라이언트의 분할 맵 캐시를 채우는 데 사용합니다. 자격 증명은 GetSqlShardMapManager에 대한 동일한 호출 패턴을 통해 제공됩니다.

// Obtain shard map manager.
ShardMapManager shardMapManager = ShardMapManagerFactory.GetSqlShardMapManager(smmReadOnlyConnectionString, ShardMapManagerLoadPolicy.Lazy);  

관리자가 아닌 사용자를 대신하여 이 액세스에 대한 서로 다른 자격 증명의 사용을 반영하기 위해 smmReadOnlyConnectionString을 사용합니다. 이러한 자격 증명은 전역 분할된 데이터베이스 맵에 대한 쓰기 권한을 제공하지 않아야 하기 때문입니다.

연결 자격 증명

OpenConnectionForKey(Java, .NET) 메서드를 사용하여 분할 키와 연결된 분할된 데이터베이스에 액세스할 때 추가 자격 증명이 필요합니다. 이러한 자격 증명은 분할된 데이터베이스에 있는 로컬 분할된 데이터베이스 맵 테이블에 대한 읽기 전용 액세스 권한을 제공해야 합니다. 분할에서 데이터 종속 라우팅에 대한 연결 유효성 검사를 수행하는 데 필요합니다. 이 코드 조각은 데이터 종속 라우팅의 컨텍스트에서 데이터 액세스를 허용합니다.

using (SqlConnection conn = rangeMap.OpenConnectionForKey<int>(targetWarehouse, smmUserConnectionString, ConnectionOptions.Validate))

이 예제에서 smmUserConnectionString 에는 사용자 자격 증명의 연결 문자열이 저장됩니다. Azure SQL Database의 경우 사용자 자격 증명에 대한 일반적인 연결 문자열은 다음과 같습니다.

"User ID=<yourusername>; Password=<youruserpassword>; Trusted_Connection=False; Encrypt=True; Connection Timeout=30;"  

관리 자격 증명과 마찬가지로 “username@server” 형식의 값을 사용하지 않습니다. 대신 "username"을 사용합니다. 또한 참고로 연결 문자열은 서버 이름과 데이터베이스 이름을 포함하지 않습니다. 이는 OpenConnectionForKey 호출이 키를 기반으로 올바른 분할에 자동으로 연결을 전달하기 때문입니다. 따라서 데이터베이스 이름과 서버 이름을 제공하지 않습니다.

참고 항목

Azure SQL Database에서 데이터베이스 및 로그인 관리

SQL Database 보안 설정

탄력적 데이터베이스 작업

아직 탄력적인 데이터베이스 도구를 사용 하지 않나요? 시작 가이드를 확인합니다. 질문이 있는 경우 SQL Database에 대한 Microsoft Q&A 질문 페이지에서 문의하고, 기능 요청이 있는 경우 SQL Database 사용자 의견 포럼에서 새로운 아이디어를 추가하거나 기존 아이디어에 투표해 주세요.