OneLake SAS(공유 액세스 서명) 만들기(미리 보기)
OneLake SAS를 만들어 Microsoft Entra 자격 증명으로 지원되는 OneLake의 폴더 또는 파일에 대한 단기적이고 위임된 액세스를 제공할 수 있습니다. OneLake SAS는 Microsoft Entra를 지원하지 않고 애플리케이션에 대한 임시 액세스를 제공하여 데이터를 로드하거나 다른 고객 애플리케이션 또는 ISV(독립 소프트웨어 공급업체) 간에 프록시 역할을 할 수 있습니다.
OneLake SAS를 만들려면 먼저 사용자 위임 키를 요청한 다음 SAS에 서명하는 데 사용해야 합니다. 사용자 위임 키를 요청하려면 사용자 위임 키 가져오기 작업을 호출 합니다 . OneLake SAS는 데이터 항목 내의 파일 및 폴더에 대한 액세스 권한만 부여할 수 있으며 항목 또는 작업 영역을 만들거나 삭제하는 등의 관리 작업에는 사용할 수 없습니다.
OneLake SAS는 데이터 항목 내의 파일 및 폴더에 대한 액세스 권한만 부여할 수 있으며 작업 영역 또는 항목 만들기와 같은 관리 작업에는 사용할 수 없습니다.
OneLake SAS는 Azure Storage와 호환되는 도구 및 애플리케이션과의 호환성을 위해 동일한 매개 변수를 사용하여 Azure Storage 사용자 위임 SAS와 유사하게 만들어집니다.
Important
이 기능은 프리뷰로 제공됩니다.
권한 할당
사용자 위임 키를 요청하는 것은 패브릭의 테넌트 수준 작업입니다. 사용자 위임 키를 요청하려면 사용자 위임 키를 요청하는 사용자 또는 보안 원칙에 패브릭 테넌트에서 한 작업 영역에서 읽기 권한이 있어야 합니다. 요청 중인 사용자의 ID는 SAS를 인증하는 데 사용됩니다. 즉, 사용자에게 SAS 액세스 권한을 부여하는 데이터에 대한 권한이 있어야 합니다.
OAuth 2.0 토큰 획득
사용자 위임 키를 가져오려면 먼저 Microsoft Entra ID에서 OAuth 2.0 토큰을 요청합니다. 전달자 스키마를 사용하여 토큰을 제공하여 사용자 위임 키 가져오기 작업에 대한 호출 권한을 부여합니다. Microsoft Entra ID에서 OAuth 토큰을 요청하는 방법에 대한 자세한 내용은 인증 흐름 및 애플리케이션 시나리오를 참조 하세요.
사용자 위임 키 요청
사용자 위임 키 가져오기 작업을 호출하면 키가 사용자 위임 SAS 토큰의 매개 변수로 사용되는 값 집합으로 반환됩니다. 이러한 매개 변수는 사용자 위임 키 가져오기 참조 및 다음 섹션에서 설명합니다.
클라이언트가 OAuth 2.0 토큰을 사용하여 사용자 위임 키를 요청하면 OneLake는 클라이언트를 대신하여 사용자 위임 키를 반환합니다. 이 사용자 위임 키를 사용하여 만든 SAS는 클라이언트에 부여된 사용 권한을 SAS에 명시적으로 부여된 권한으로 범위가 지정됩니다.
사용자 위임 키의 수명 동안 원하는 수의 OneLake SAS를 만들 수 있습니다. 그러나 OneLake SAS 및 사용자 위임 키는 최대 1시간 동안 유효할 수 있으며 이를 요청하는 토큰의 수명을 초과할 수 없습니다. 이러한 수명 제한은 Azure Storage 사용자가 위임한 SAS의 최대 수명보다 짧습니다.
사용자 위임 SAS 생성
다음 표에는 OneLake SAS 토큰에 대해 지원되는 필드가 요약되어 있습니다. 후속 섹션에서는 이러한 매개 변수와 Azure Storage SAS 토큰의 차이점에 대해 자세히 설명합니다. OneLake는 Azure Storage에서 지원하는 모든 선택적 매개 변수를 지원하지 않으며 지원되지 않는 매개 변수로 생성된 OneLake SAS는 거부됩니다.
SAS 필드 이름 | SAS 토큰 매개 변수 | Status | 설명 |
---|---|---|---|
signedVersion |
sv |
필수 | 서명 필드를 생성하는 데 사용되는 서비스의 버전을 나타냅니다. OneLake는 버전 '2020-02-10', '2020-12-06' 이후의 모든 버전 및 '2020-02-10' 이전 버전을 지원합니다. |
signedResource |
sr |
Required | 공유 액세스 서명을 통해 액세스할 수 있는 리소스를 지정합니다. Blob(b ) 및 디렉터리(d )만 OneLake에 적용할 수 있습니다. |
signedStart |
st |
선택 사항 | 공유 액세스 서명이 유효해지는 시간입니다. ISO 8601 UTC 형식입니다. |
signedExpiry |
se |
Required | 공유 액세스 서명이 만료되는 시간 |
signedPermissions |
sp |
Required | SAS가 리소스에서 수행할 수 있는 작업을 나타냅니다. 사용 권한 지정 섹션의 자세한 내용 |
signedObjectId |
skoid |
Required | Microsoft Entra 보안 주체를 식별합니다. |
signedtenantId |
sktid |
Required | 보안 주체가 정의된 Microsoft Entra 테넌트를 지정합니다. |
signedKeyStartTime |
skt |
선택 사항 | 서명 키가 시작되는 시간(UTC)입니다. 사용자 위임 키 가져오기 작업에서 반환됩니다. |
signedKeyExpiryTime |
ske |
Required | 서명 키가 종료되는 시간(UTC)입니다. 사용자 위임 키 가져오기 작업에서 반환됩니다. |
signedKeyVersion |
skv |
Required | 사용자 위임 키를 가져오는 데 사용되는 스토리지 서비스 버전입니다. 사용자 위임 키 가져오기 작업에서 반환됩니다. OneLake는 2020-02-10 이전 버전과 2020-12-06 이후 버전을 지원합니다. |
signedKeyService |
sks |
Required | 사용자 위임 키에 대한 유효한 서비스입니다. OneLake는 Blob Storage(sks=b )만 지원합니다. |
signature |
sig |
Required | 서명은 SHA256 알고리즘을 사용하여 문자열-서명 및 키를 통해 계산된 다음 Base64 인코딩으로 인코딩된 HMAC(해시 기반 메시지 인증 코드)입니다. |
signedAuthorizedObjectId |
saoid |
지원되지 않음 | OneLake SAS는 이 기능을 지원하지 않습니다. |
signedUnauthorizedObjectId |
suoid |
지원되지 않음 | OneLake SAS는 이 기능을 지원하지 않습니다. |
signedCorrelationId |
suoid |
지원되지 않음 | OneLake SAS는 이 매개 변수를 지원하지 않습니다. |
signedDirectoryDepth |
sdd |
선택 사항 | 문자열-서명의 canonicalizedResource 필드에 지정된 디렉터리의 루트 폴더 내 디렉터리 수를 나타냅니다. 을(를) 하는 경우에만 sr=d 지원됨 |
signedEncryptionScope |
ses |
지원되지 않음 | OneLake SAS는 현재 사용자 지정 암호화 범위를 지원하지 않습니다. |
signedIP |
sip |
지원되지 않음 | OneLake SAS는 현재 IP 필터링을 지원하지 않습니다. |
signedProtocol |
spr |
선택 사항 | OneLake는 https 요청만 지원합니다. |
Cache-Control 응답 헤더 |
rscc |
지원되지 않음 | OneLake SAS는 이 매개 변수를 지원하지 않습니다. |
Content-Disposition 응답 헤더 |
rscd |
지원되지 않음 | OneLake SAS는 이 매개 변수를 지원하지 않습니다. |
Content-Encoding 응답 헤더 |
rsce |
지원되지 않음 | OneLake SAS는 이 매개 변수를 지원하지 않습니다. |
Content-Language 응답 헤더 |
rscl |
지원되지 않음 | OneLake SAS는 이 매개 변수를 지원하지 않습니다. |
Content Type 응답 헤더 |
rsct |
지원되지 않음 | OneLake SAS는 이 매개 변수를 지원하지 않습니다. |
사용 권한 지정
SAS 토큰의 signedPermissions
(sp
) 필드에 지정된 사용 권한은 SAS를 소유한 클라이언트가 리소스에서 수행할 수 있는 작업을 나타냅니다.
클라이언트가 동일한 SAS를 사용하여 여러 작업을 수행할 수 있도록 권한을 결합할 수 있습니다. SAS를 생성할 때는 다음과 같은 순서 racwdxltmeop
로 사용 권한을 포함해야 합니다.
유효한 사용 권한 설정의 예로는 rw
,rd
, rl
, wd
wl
및 rl
. 사용 권한을 두 번 이상 지정할 수 없습니다.
기존 Azure Storage 도구와의 패리티를 보장하기 위해 OneLake는 Azure Storage와 동일한 권한 형식을 사용합니다. OneLake는 SAS에 signedPermissions
부여된 사용 권한, Fabric의 서명 ID 권한 및 OneLake 데이터 액세스 역할(해당하는 경우)을 평가합니다. 사용 권한 설정 또는 작업 영역 삭제와 같은 일부 작업은 일반적으로 Azure Storage API를 통해 OneLake에서 허용되지 않으므로 해당 권한(sp=op
)을 부여해도 OneLake SAS에서 해당 작업을 수행할 수 없습니다.
Permission | URI 기호 | 리소스 | 허용되는 작업 |
---|---|---|---|
읽기 | r | 디렉터리, Blob | 컨테이너 또는 디렉터리에 있는 Blob의 콘텐츠, 차단 목록, 속성 및 메타데이터를 읽습니다. Blob을 복사 작업의 원본으로 사용합니다. |
추가 | a | 디렉터리, Blob | 추가 Blob에 블록을 추가합니다. |
만들기 | c | 디렉터리, Blob | 새 Blob을 작성하거나, Blob을 스냅샷으로 만들거나, Blob을 새 Blob에 복사합니다. |
쓰기 | w | 디렉터리, Blob | 콘텐츠, 속성, 메타데이터 또는 차단 목록을 만들거나 씁니다. Blob을 스냅샷하거나 임대합니다. Blob을 복사 작업의 대상으로 사용합니다. |
삭제 | d | 디렉터리, Blob | Blob을 삭제합니다. |
버전 삭제 | x | Blob | Blob 버전 삭제 |
영구 삭제 | y | Blob | Blob 스냅샷 또는 버전을 영구적으로 삭제합니다. |
List | l | 디렉터리 | Blob을 비귀적으로 나열합니다. |
태그 | t | Blob | Blob에서 태그를 읽거나 씁니다. |
Move | 분 | 디렉터리, Blob | Blob 또는 디렉터리 및 해당 내용을 새 위치로 이동합니다. |
실행 | e | 디렉터리, Blob | 시스템 속성을 가져와 스토리지 계정에 대해 계층 구조 네임스페이스를 사용하도록 설정한 경우 Blob의 POSIX ACL을 가져옵니다. |
소유권 | o | 디렉터리, Blob | 소유자 또는 소유 그룹을 설정합니다. OneLake에서 지원되지 않음 |
사용 권한 | p | 디렉터리, Blob | 사용 권한을 설정합니다. OneLake에서 지원되지 않음 |
불변성 정책 설정 | i | Blob | Blob에서 불변성 정책 또는 법적 보존을 설정하거나 삭제합니다. |
서명 지정
signature
(sig
) 필드는 공유 액세스 서명을 사용하여 클라이언트가 수행한 요청에 권한을 부여하는 데 사용됩니다. 문자열-서명은 요청에 권한을 부여하기 위해 확인해야 하는 필드에서 생성된 고유한 문자열입니다. 서명은 SHA256 알고리즘을 사용하여 문자열 간 및 키를 통해 계산된 다음 bBase65 인코딩을 사용하여 인코딩되는 HMAC입니다.
사용자 위임 SAS의 서명 문자열을 생성하려면 요청에서 만든 필드에서 문자열 간을 만들고 문자열을 UTF-8로 인코딩한 다음 HMAC-SHA256 알고리즘을 사용하여 서명을 계산합니다. 문자열-서명에 포함된 필드는 URL로 디코딩되어야 합니다.
문자열-서명에 필요한 필드는 권한 부여(sv
) 필드에 사용되는 서비스 버전에 따라 달라집니다. 다음 섹션에서는 OneLake SAS를 지원하는 버전에 대한 문자열 간 구성에 대해 설명합니다.
버전 2020-12-06 이상
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
signedEncryptionScope + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
버전 2020-01-10
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
2020-02-10 이전 버전
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
정식화 리소스
canonicalizedResource
문자열의 부분은 리소스에 대한 정식 경로입니다. OneLake 엔드포인트와 리소스 이름을 포함해야 하며 URL 디코딩되어야 합니다. OneLake 경로에는 해당 작업 영역이 포함되어야 하며 디렉터리 경로에는 매개 변수에 해당하는 sdd
하위 디렉터리 수가 포함되어야 합니다.
다음 예제에서는 OneLake URL을 해당 정식화된 리소스로 변환하는 방법을 보여 줍니다. OneLake는 DFS 및 Blob 작업 및 엔드포인트를 모두 지원하며 OneLake의 계정 이름은 항상 onelake임을 기억하세요.
Blob 파일
URL = https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv"
DFS 디렉터리
URL = https://onelake.dfs.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/"
OneLake SAS 예제
다음 예제에서는 OneLake SAS 토큰이 추가된 OneLake SAS URI를 보여 줍니다. SAS 토큰은 레이크하우스의 Files 폴더에 대한 읽기 및 쓰기 권한을 제공합니다.
https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/?sp=rw&st=2023-05-24T01:13:55Z&se=2023-05-24T09:13:55Z&skoid=<object-id>&sktid=<tenant-id>&skt=2023-05-24T01:13:55Z&ske=2023-05-24T09:13:55Z&sks=b&skv=2022-11-02&sv=2022-11-02&sr=d&sig=<signature>