สร้างลายเซ็นการเข้าถึงที่ใช้ร่วมกันของ OneLake (SAS) (ตัวอย่าง)
คุณสามารถสร้าง OneLake SAS เพื่อมอบสิทธิ์การเข้าถึงโฟลเดอร์หรือไฟล์ระยะสั้นใน OneLake ที่ได้รับการสนับสนุนโดยข้อมูลประจําตัวของ Microsoft Entra OneLake SAS สามารถให้การเข้าถึงแอปพลิเคชันชั่วคราวโดยไม่มีการสนับสนุนสําหรับ Microsoft Entra อนุญาตให้พวกเขาโหลดข้อมูลหรือทําหน้าที่เป็นพร็อกซีระหว่างแอปพลิเคชันลูกค้าอื่น ๆ หรือผู้จัดจําหน่ายซอฟต์แวร์อิสระ (ISV)
หากต้องการสร้าง OneLake SAS ก่อนอื่นคุณต้องร้องขอคีย์การรับมอบสิทธิ์ของผู้ใช้ซึ่งคุณต้องใช้เพื่อลงชื่อใน SAS หากต้องการร้องขอคีย์การรับมอบสิทธิ์ของผู้ใช้ ให้ เรียกใช้การดําเนินการรับคีย์ การรับมอบสิทธิ์ของผู้ใช้ OneLake SAS สามารถให้สิทธิ์การเข้าถึงไฟล์และโฟลเดอร์ภายในรายการข้อมูลเท่านั้น และไม่สามารถใช้สําหรับการดําเนินการจัดการเช่นการสร้างหรือการลบรายการหรือพื้นที่ทํางานได้
OneLake SAS สามารถให้สิทธิ์การเข้าถึงไฟล์และโฟลเดอร์ภายในรายการข้อมูลเท่านั้น และไม่สามารถใช้สําหรับการดําเนินการจัดการเช่นการสร้างพื้นที่ทํางานหรือรายการได้
OneLake SAS ถูกสร้างขึ้นในทํานอง เดียวกับ SAS ที่มอบสิทธิ์โดยผู้ใช้ Azure Storage โดยใช้พารามิเตอร์เดียวกันเพื่อความเข้ากันได้กับเครื่องมือและแอปพลิเคชันที่สามารถเข้ากันได้กับ Azure Storage
สำคัญ
คุณลักษณะนี้อยู่ในตัวอย่าง
กําหนดสิทธิ์
การขอคีย์การมอบสิทธิ์ของผู้ใช้คือการดําเนินการในระดับผู้เช่าใน Fabric หากต้องการร้องขอคีย์การมอบสิทธิ์ผู้ใช้ ผู้ใช้หรือหลักความปลอดภัยที่ร้องขอคีย์การรับมอบสิทธิ์ผู้ใช้ต้องมีสิทธิ์ในการอ่านเป็นอย่างน้อยในพื้นที่ทํางานหนึ่งในผู้เช่า Fabric ข้อมูลประจําตัวของผู้ใช้ที่ร้องขอจะถูกใช้เพื่อรับรองความถูกต้อง SAS ซึ่งหมายความว่าผู้ใช้ต้องมีสิทธิ์ในการเข้าถึงข้อมูลที่พวกเขาให้สิทธิ์
รับโทเค็น OAuth 2.0
เพื่อรับคีย์การรับมอบสิทธิ์ผู้ใช้ ก่อนอื่นขอโทเค็น OAuth 2.0 จาก ID Microsoft Entra อนุญาตการเรียกไปยัง การดําเนินการรับคีย์ การมอบหมายผู้ใช้ โดยให้โทเค็นที่มีโครงร่างแบเรอร์ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการร้องขอโทเค็น OAuth จาก Microsoft Entra ID ดู โฟลว์การรับรองความถูกต้องและสถานการณ์ของแอปพลิเคชัน
ร้องขอคีย์การรับมอบสิทธิ์ของผู้ใช้
การ เรียกใช้การดําเนินการรับคีย์ การมอบหมายผู้ใช้จะส่งกลับคีย์เป็นชุดของค่าที่ใช้เป็นพารามิเตอร์บนโทเค็น SAS การรับมอบสิทธิ์ของผู้ใช้ พารามิเตอร์เหล่านี้อธิบายไว้ใน รับการอ้างอิงคีย์ การมอบหมายผู้ใช้ และในส่วนถัดไป
เมื่อไคลเอ็นต์ร้องขอคีย์การรับมอบสิทธิ์ของผู้ใช้โดยใช้โทเค็น OAuth 2.0 OneLake จะส่งกลับคีย์การรับมอบสิทธิ์ของผู้ใช้ในนามของไคลเอ็นต์ SAS ที่สร้างขึ้นด้วยคีย์การรับมอบสิทธิ์ผู้ใช้นี้จะได้รับสิทธิ์ส่วนใหญ่ที่มอบให้กับไคลเอ็นต์ ที่กําหนดขอบเขตสิทธิ์ที่ให้ไว้อย่างชัดเจนใน SAS
คุณสามารถสร้าง OneLake SASs จํานวนใดก็ได้ตลอดอายุการใช้งานของคีย์การรับมอบสิทธิ์ของผู้ใช้ อย่างไรก็ตาม OneLake SAS และคีย์การรับมอบสิทธิ์ผู้ใช้สามารถใช้ได้เป็นเวลาเกือบหนึ่งชั่วโมงและต้องไม่เกินอายุการใช้งานของโทเค็นที่ร้องขอ ข้อจํากัดตลอดอายุการใช้งานเหล่านี้สั้นกว่าอายุการใช้งานสูงสุดของผู้ใช้ Azure Storage ที่ได้รับมอบหมาย SAS
สร้าง SAS การรับมอบสิทธิ์ผู้ใช้
ตารางต่อไปนี้สรุปเขตข้อมูลที่ได้รับการสนับสนุนสําหรับโทเค็น OneLake SAS ส่วนที่ตามมาให้รายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้และความแตกต่างของโทเค็น Azure Storage SAS OneLake ไม่สนับสนุนพารามิเตอร์ตัวเลือกทั้งหมดที่ได้รับการสนับสนุนโดย Azure Storage และ OneLake SAS ที่สร้างขึ้นด้วยพารามิเตอร์ที่ไม่รองรับจะถูกปฏิเสธ
ชื่อเขตข้อมูล SAS | พารามิเตอร์โทเค็น SAS | สถานภาพ | คำอธิบาย |
---|---|---|---|
signedVersion |
sv |
ที่ต้องการ | ระบุเวอร์ชันของบริการที่ใช้ในการสร้างฟิลด์ลายเซ็น OneLake รองรับเวอร์ชัน '2020-02-10' ทุกเวอร์ชันหลังจาก '2020-12-06' และเวอร์ชันก่อน '2020-02-10' |
signedResource |
sr |
ที่ต้องการ | ระบุแหล่งข้อมูลที่สามารถเข้าถึงได้ผ่านลายเซ็นการเข้าถึงที่ใช้ร่วมกัน เฉพาะ blob (b ) และไดเรกทอรี (d ) เท่านั้นที่สามารถใช้ได้กับ OneLake |
signedStart |
st |
เลือกได้ | เวลาเมื่อลายเซ็นสําหรับการเข้าถึงที่ใช้ร่วมกันมีผลบังคับใช้ รูปแบบ UTC ISO 8601 |
signedExpiry |
se |
ที่ต้องการ | เวลาที่ลายเซ็นการเข้าถึงที่ใช้ร่วมกันหมดอายุ |
signedPermissions |
sp |
ที่ต้องการ | ระบุว่าการดําเนินการใดที่ SAS สามารถดําเนินการกับทรัพยากรได้ รายละเอียดเพิ่มเติมในส่วนระบุสิทธิ์ |
signedObjectId |
skoid |
ที่ต้องการ | ระบุองค์ประกอบหลักของความปลอดภัยของ Microsoft Entra |
signedtenantId |
sktid |
ที่ต้องการ | ระบุผู้เช่า Microsoft Entra ที่กําหนดหลักความปลอดภัย |
signedKeyStartTime |
skt |
เลือกได้ | เวลาใน UTC เมื่อคีย์การลงชื่อเริ่มต้น ส่งกลับโดย การดําเนินการรับคีย์ การมอบหมายผู้ใช้ |
signedKeyExpiryTime |
ske |
ที่ต้องการ | เวลาใน UTC เมื่อคีย์การลงชื่อสิ้นสุดลง ส่งกลับโดย การดําเนินการรับคีย์ การมอบหมายผู้ใช้ |
signedKeyVersion |
skv |
ที่ต้องการ | เวอร์ชันบริการที่เก็บข้อมูลที่ใช้เพื่อรับคีย์การรับมอบสิทธิ์ของผู้ใช้ ส่งกลับโดย การดําเนินการรับคีย์ การมอบหมายผู้ใช้ OneLake สนับสนุนเวอร์ชัน 2020-02-10 และเวอร์ชันก่อนหน้าหลังจาก 2020-12-06 |
signedKeyService |
sks |
ที่ต้องการ | บริการที่ถูกต้องสําหรับคีย์การรับมอบสิทธิ์ของผู้ใช้ OneLake สนับสนุนเฉพาะที่เก็บข้อมูล Blob (sks=b ) เท่านั้น |
signature |
sig |
ที่ต้องการ | ลายเซ็นเป็นรหัสการรับรองความถูกต้องของข้อความที่ใช้แฮช (HMAC) ที่คํานวณผ่านสตริงเพื่อลงชื่อและคีย์โดยใช้อัลกอริทึม SHA256 และเข้ารหัสด้วยการเข้ารหัส Base64 |
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 ไม่สนับสนุนพารามิเตอร์นี้ |
ระบุสิทธิ์
สิทธิ์ที่ระบุไว้ใน signedPermissions
เขตข้อมูล (sp
) บนโทเค็น SAS จะระบุว่าการดําเนินการใดที่ไคลเอ็นต์ที่มี SAS สามารถดําเนินการกับทรัพยากรได้
สามารถรวมสิทธิ์เพื่ออนุญาตให้ไคลเอ็นต์ดําเนินการหลายอย่างด้วย SAS เดียวกัน เมื่อคุณสร้าง SAS คุณต้องใส่สิทธิ์ในลําดับต่อไปนี้: racwdxltmeop
ตัวอย่างของการตั้งค่าสิทธิ์ที่ถูกต้องได้แก่ rw
rd
, , rl
, wd
, wl
และrl
คุณไม่สามารถระบุสิทธิ์มากกว่าหนึ่งครั้ง
เพื่อให้แน่ใจว่าพาริตีกับเครื่องมือ Azure Storage ที่มีอยู่ OneLake ใช้รูปแบบสิทธิ์เดียวกันกับ Azure Storage OneLake ประเมินสิทธิ์ที่มอบให้กับ SAS ใน signedPermissions
สิทธิ์ของข้อมูลประจําตัวการลงชื่อใน Fabric และบทบาทการเข้าถึงข้อมูล OneLake ใด ๆ ถ้ามี โปรดจําไว้ว่าการดําเนินการบางอย่าง เช่น การตั้งค่าสิทธิ์หรือการลบพื้นที่ทํางาน จะไม่ได้รับอนุญาตบน OneLake ผ่าน Azure Storage API โดยทั่วไป ดังนั้นจึงเป็นการให้สิทธิ์นั้น (sp=op
) จะไม่อนุญาตให้ OneLake SAS ดําเนินการเหล่านั้น
สิทธิ์ | สัญลักษณ์ URI | ทรัพยากร | การดําเนินงานที่ได้รับอนุญาต |
---|---|---|---|
อ่าน | r | ไดเรกทอรี, Blob | อ่านเนื้อหา บล็อกลิสต์ คุณสมบัติ และเมตาดาต้าของ blob ใด ๆ ในคอนเทนเนอร์หรือไดเรกทอรี ใช้ blob เป็นแหล่งข้อมูลของการดําเนินการคัดลอก |
เพิ่ม | น. | ไดเรกทอรี, Blob | เพิ่มบล็อกลงใน blob ผนวก |
สร้าง | c | ไดเรกทอรี, Blob | เขียน blob ใหม่ สแนปช็อต blob หรือคัดลอก blob ไปยัง blob ใหม่ |
เขียน | w | ไดเรกทอรี, Blob | สร้างหรือเขียนเนื้อหา คุณสมบัติ เมตาดาต้า หรือ blocklist สแนปช็อตหรือเช่า blob ใช้ blob เป็นปลายทางของการดําเนินการคัดลอก |
Delete | d | ไดเรกทอรี, Blob | ลบ blob |
ลบเวอร์ชัน | x | Blob | ลบเวอร์ชัน blob |
การลบถาวร | y | Blob | ลบสแนปช็อต blob หรือเวอร์ชันอย่างถาวร |
List | l | Directory | ใส่รายการ blobs แบบไม่ซ้ํา |
แท็ก | t | Blob | อ่านหรือเขียนแท็กบน blob |
ย้าย | m | ไดเรกทอรี, Blob | ย้าย blob หรือไดเรกทอรีและเนื้อหาไปยังตําแหน่งใหม่ |
ดำเนินการ | e | ไดเรกทอรี, Blob | รับคุณสมบัติของระบบ และถ้าเนมสเปซแบบลําดับชั้นเปิดใช้งานสําหรับบัญชีเก็บข้อมูล ให้รับ POSIX ACL ของ blob |
ความเป็นเจ้าของ | o | ไดเรกทอรี, Blob | ตั้งค่าเจ้าของหรือกลุ่มที่เป็นเจ้าของ ไม่รองรับใน OneLake |
การอนุญาต | p | ไดเรกทอรี, Blob | ตั้งค่าการอนุญาต ไม่รองรับใน OneLake |
กําหนดนโยบายการเลียนแบบ | ผม | Blob | ตั้งค่าหรือลบนโยบายความเคลื่อนไหวหรือการระงับทางกฎหมายใน blob |
ระบุลายเซ็น
เขตข้อมูล signature
(sig
) ใช้เพื่ออนุญาตคําขอที่ทําโดยลูกค้าด้วยลายเซ็นการเข้าถึงที่ใช้ร่วมกัน การลงชื่อสตริงเป็นสตริงที่ไม่ซ้ํากันซึ่งสร้างขึ้นจากเขตข้อมูลที่ต้องตรวจสอบเพื่ออนุญาตคําขอ ลายเซ็นเป็น HMAC ที่คํานวณผ่านสตริงต่อเครื่องหมายและคีย์โดยใช้อัลกอริทึม SHA256 และเข้ารหัสโดยใช้การเข้ารหัส bBase65
หากต้องการสร้างสตริงลายเซ็นของ SAS การรับมอบสิทธิ์ผู้ใช้ ให้สร้างสตริงต่อนามจากเขตข้อมูลที่สร้างขึ้นโดยคําขอ เข้ารหัสสตริงเป็น UTF-8 แล้วคํานวณลายเซ็นโดยใช้อัลกอริทึม HMAC-SHA256 เขตข้อมูลที่รวมอยู่ใน string-to-sign ต้องมีการถอดรหัส URL
เขตข้อมูลที่จําเป็นในการลงชื่อสตริงจะขึ้นอยู่กับเวอร์ชันบริการที่ใช้สําหรับเขตข้อมูลการตรวจสอบ (sv
) ส่วนต่อไปนี้อธิบายการกําหนดค่าแบบลงชื่อสตริงสําหรับเวอร์ชันที่สนับสนุน OneLake SASs
เวอร์ชัน 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
พารามิเตอร์
ตัวอย่างต่อไปนี้แสดงวิธีการแปลง URL OneLake ของคุณเป็นทรัพยากรมาตรฐานที่สอดคล้องกัน โปรดจําไว้ว่า 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 URI ด้วยโทเค็น OneLake SAS ต่อท้าย โทเค็น SAS ให้สิทธิ์ในการอ่านและเขียนไปยังโฟลเดอร์ไฟล์ใน lakehouse
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>