2010-06-24 3 views
3

SQL 데이터베이스를 백업하고 클라우드 저장소에 저장하는 백업 서비스를 작성 중입니다. 실제로 이미 Amazon S3가 구현되었지만 애플리케이션이 고객에게 배포되므로 API 키를 애플리케이션에 저장할 수 없습니다. 키를 제공하기 위해 웹 서비스를 사용하는 것이 고려되었지만 (키가 도난 당할 가능성을 여전히 남아 있기 때문에) 현재로서는 최선의 선택이 아닙니다.Azure 공유 액세스 서명을 사용하면 누구나 내 BLOB에 액세스 할 수 있습니까?

그래서 BLOB 서비스 및 톱 Windows Azure를 조사하고있었습니다. 클라우드의 리소스에 대한 액세스를 제공하는 데 사용할 수있는 이러한 공유 액세스 서명이 있습니다. 서명을 사용하여 클라우드에 방울을 넣을 수도 있습니다. 그러나 MSDN docs을 통해 읽는다면, 나는 이것이 안전하지 않은 시스템이라고 생각할 수 밖에 없습니다. 1. 내 계정의 컨테이너 이름과 정확한 이름을 알고있는 사람 2. 서명을 구성하는 방법은 개체에 액세스 할 수 있습니다. 이 서명을 사용할 때 비밀 키가 필요하지 않습니다. 적어도 그것은 문서를 읽는 나의 인상입니다.

마침내 내 질문에. Azure에서 공유 액세스 서명을 평가 한 결과가 맞는지, 그렇지 않은 이유는 무엇입니까? 그리고 누구든지 내가 성취하려는 일을하는 대체 방법을 제안 할 수 있습니까?

+0

이제 키로 암호화하여 서명 해시를 계산해야합니다. 그래서 그것은 나의 첫 번째 질문에 답한다 (나는 처음 평가에서 틀렸다). Azure를 사용하면 무제한의 컨테이너를 만들 수 있으므로 고객 당 컨테이너를 갖게됩니다. 고객이 내 웹 서비스에 전화를 걸면 고객에게 고유 한 서명이 생성됩니다. 이 방법으로 모든 암호화 키, 컨테이너 이름 등을 클라이언트 시스템이 아닌 내 서버에서 보호 할 수 있습니다. – BrianB

답변

6

공유 액세스 시그니처는 특정 컨테이너 또는 특정 blob에서 범위를 지정할 수 있습니다. 그런 다음 사용자가 부여한 사용 권한 (읽기, 쓰기, BLOB)을 지정할 수 있으며 유효 기간을 지정할 수 있습니다.

을 작성하는 유일한 방법은 SAS가 저장 키를 갖는 것이지만, SAS를 가진 사람이라면 누구든지 허용 된 것을 수행하는 데 사용할 수 있습니다.

모든 고객이 얼룩을 쓰지만 읽지 못하게하려는 것 같습니다. 그렇다면 쓰기 권한 만 지정하는 SAS가 트릭을 수행해야합니다.

그러나 개별 고객이 사용량을 제한하거나 (미터링하기를 원한다고 가정합니까? 그렇다면 각 사용을 허가하고 해당 작업을 수행 할 수 있도록 만료되는 특정 SAS를 생성하는 서버 (웹 서비스)에서 활성화해야 할 항목이 필요할 것입니다. 그런 다음 각 용도를 추적하고 청구 할 수 있습니다.

+0

아직 구현하지 않은 복원 기능에 대해서도 읽기를 허용해야합니다. 클라이언트가 클라우드에서 작업해야 할 때마다 웹 서비스를 사용하여 SAS를 생성 할 것입니다. – BrianB

+0

아마도 멍청한 질문 일지 모르지만 서명이 만들어지면 blob URL이 고려됩니다. 그래서 blob에서 생성 된 SAS는 그 blob에만 유용합니다. 해당 컨테이너에 blob이라는 URL 목록이있는 경우 끝에있는 하나의 blob에서 SAS 토큰을 집어 넣고 다른 하나에 액세스 할 수 없습니까? – nmit026