前一篇文章我們討論到醫療資料的隱私保護,透過去識別化可以降低資料外洩後被識別的風險,當資料傳上後台、雲端服務後,誰有權限能夠查看呢?
在 Day3 的文章中,我們將醫療軟體的利害關係人簡單分為三類:使用者、醫護人員、管理人員。
所以我們可能會想,使用者將資料上傳後,他只能看到自己的資料。那麼醫護人員呢?他可以看他所照護的這些病人們;而管理人員則可以看到整個系統的使用情況。
也就是說,使用者上傳的時候,可能會由醫護人員以及管理人員看到他的資料。
這樣是正確的嗎?
若系統不小心將醫護人員的允許可以看所有病人的資料,那麼不屬於他可以看的資料,他也會看得到。
這麼一來,醫護人員就擁有了他不應該擁有的權限;也就是說,使用者的資料在無形中就暴露給不該存取的醫護人員了。
好,回到我們的問題。那麼應該要如何設定權限呢?
可以拆成「身分驗證」以及「授權」:
當一位醫護人員登入系統,系統首先要確認:目前操作者是否控制與這個帳號綁定的驗證方式?例如,是否能使用該帳號的密碼或通行密鑰完成驗證。這就是身分驗證。
NIST SP 800-63B 討論如何驗證操作者控制帳號所綁定的驗證方式。驗證成功,系統可以建立這個帳號的登入工作階段;但這個結果沒有回答「他能查看哪些病人的紀錄」。如果還要查證帳號對應的真實世界身分,那是另一項工作,稱為身分查核(Identity Proofing)。
接著,這位醫護人員要求查看一筆血壓紀錄。系統要判斷的就不只是「他有沒有登入」,還包括:他能否執行「查看」?紀錄屬於哪位病人?他目前是否與這位病人有符合規則的照護關係?這些問題屬於授權。
NIST SP 800-162 說明,授權可以根據操作者、目標資料、要求的操作及相關情境,依存取規則決定允許或拒絕。在我們的示範 App 中,「醫護人員」是其中一項條件,卻不是查看所有病人紀錄的通行證。
例如,同一位醫護人員登入後,可能獲准查看自己照護的病人甲,卻不能查看沒有照護關係的病人乙。身分驗證確認這次操作使用哪個帳號;授權判斷這個帳號能否對這筆資料執行這項操作。
身分驗證以及授權都會隨著時間、情況而改變,所以每次要求查看或修改紀錄時,依當時有效的角色、照護關係或委派判斷。譬如說,某位病人原本是由某醫護人員所照護的,但隨著醫護人員的調職、病人的轉院,可能就會造成不同的授權改變。
所以在每次要求查看或修改紀錄時,依目前有效的權限判斷。另外,病人有可能會委派其他家屬來看他的個人資料,這個時候,家屬是屬於被委派的。
當然,病人也有可能會將委派收回,那此時家屬就沒有辦法查看病人的資料。
所以不能只根據身份驗證來決定是不是有適當的權限,而是應該要即時地去查詢擁有的權限,來執行下一步。
「身分驗證」與「授權」是兩件看似很像,但卻不太一樣的兩個名詞,「身分驗證」確認操作者控制與帳號綁定的驗證方式;「授權」則要判斷他能否對這位病人的這筆紀錄執行查看或修改。
照護關係與家屬委派都可能改變。醫護人員調職、病人轉院,或病人撤銷委派後,原本允許的存取就需要重新判斷。因此,登入成功只是起點;每次存取健康紀錄,都要依當時有效的權限決定是否放行。