手動設定以角色為基礎的存取控制
您可以在 Oracle Cloud Infrastructure 中,使用 JSON Web Token (JWT) 自訂宣告來設定以角色為基礎的存取控制 (RBAC)。
附註:
本文件基於說明目的,使用 Oracle Cloud Infrastructure 的 Default 網域。
建立使用者的自訂屬性
使用者實體會將其特性和其他資訊儲存為屬性。例如,名字、姓氏、使用者登入、密碼等等。您可以在 Oracle Cloud Infrastructure 中建立自訂屬性。
- 按一下漢堡功能表並前往識別與安全性,然後選取網域。在「名稱」下,按一下預設網域。
- 移至綱要管理頁籤,然後選取使用者屬性。
- 按一下新增屬性,然後指定下列項目:
- 顯示名稱: ORDS RBAC
- 名稱: rbac_ords
- 描述: ORDS 的以角色為基礎的存取控制
- 資料類型:字串陣列
您可以將其他欄位保留為預設狀態。
按一下新增。您已新增自訂屬性。
- 在搜尋欄位中輸入自訂,以搜尋新增的屬性。您將檢視清單中的 ORDS RBAC 屬性。
按一下編輯屬性。
- 複製並記下 FQN 的值 (完整名稱)。
在此範例中, FQN 為 urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords 。
指定自訂角色
- 導覽至:識別 → 網域 → 預設。按一下使用者管理頁籤,然後從顯示的使用者清單中選取您的使用者名稱。
按一下編輯使用者。向下捲動至其他資訊欄位,然後在 ORDS RBAC 下輸入 SQL Developer,SODA Developer 。
如需 ORDS 角色的詳細資訊,請參閱關於 Oracle REST Data Services 使用者角色的本章。
新增角色之後,請按一下儲存變更。
建立網域整合應用程式
我們將在網域中開發整合的應用程式,並在登入時發出 JWT 權杖。
- 導覽至:識別 → 網域 → 預設。按一下整合的應用程式頁籤,然後選取新增應用程式。
- 按一下機密應用程式,然後選取啟動工作流程。
- 在新增機密應用程式對話方塊中,指定下列欄位:
- 名稱:輸入機密應用程式的名稱。例如, Spreadsheet-Addin RBAC 。
- 說明:輸入說明。例如,以試算表增益集角色為基礎之存取控制的整合應用程式。
按一下送出。
您將檢視新增的 Spreadsheet-Addin RBAC 應用程式頁面。
- 在試算表 - 增益集 RBAC 頁面的 OAuth 組態頁籤中,按一下編輯 OAuth 組態。
- 在「資源伺服器組態」底下,選取立即將此應用程式設定為資源伺服器。
- 在設定需要受 OAuth 保護的應用程式 API 中,選取 3600 作為存取權杖到期 (秒)。
- 在主要對象欄位中,輸入 ssaddin/ 。
- 按一下新增範圍 (Add scopes) 並新增 rbac 範圍 (Scope) 。
- 在用戶端組態下,指定下列欄位:
- 選取立即將此應用程式設定為從屬端。
- 選取允許的授權類型下的隱含。
- 在重新導向 URL 欄位中輸入下列值:
https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html - 在登出後 URL 欄位中輸入下列值:
https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html
按一下送出。附註:
確定您啟用應用程式。
定義自訂索賠
若要在 JWT 中包含使用者角色,我們必須使用「自訂求償」將第一個區段中建立的自訂屬性對映至 JWT。
為了達到此目的,我們需要建立額外的臨時整合應用程式,並透過該應用程式附加自訂申請。
建立識別網域整合應用程式
- 導覽至:識別 → 網域 → 預設。
- 按一下整合的應用程式頁籤,然後選取新增應用程式。
- 按一下機密應用程式,然後選取啟動工作流程。
- 輸入應用程式的名稱:識別網域整合應用程式
- 輸入描述:這是網域整合應用程式。
按一下送出。
- 在識別網域整合應用程式頁面上,選取 OAuth 組態頁籤。
- 按一下資源伺服器組態上的編輯 OAuth 組態。在編輯 OAuth 組態對話方塊中,指定下列欄位:
- 在從屬端組態底下,選取立即將此應用程式設定為從屬端預設值。
- 在授權下,選取從屬端證明資料。將組態的其餘部分保持為預設狀態。
- 選取新增應用程式角色。
- 在新增應用程式角色對話方塊中,按一下識別網域管理員並選取新增。
- 新增 App 角色之後,請按一下送出。
- 啟用應用程式。
建立 JWT 的新索賠
我們需要 CLIENT ID、CLIENT SECRET 和 DOMAIN URL,才能擷取「識別網域管理員應用程式」的新存取權杖。
我們有您在上一個步驟中建立之網域整合應用程式的 CLIENT ID 和 CLIENT SECRET。
您可以在網域頁面中的「網域」資訊底下找到 DOMAIN URL。
執行下列命令,並以您的值取代 (CLIENT ID)、(CLIENT SECRET) 和 (DOMAIN URL) 值。
export ACCESS_TOKEN=$(curl -s -i -u"(CLIENT ID):(CLIENT SECRET)" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST (DOMAIN URL)/oauth2/v1/token -d
"grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" | tail -n +1 | grep -o
'"access_token":"[^"]*' | cut -d'"' -f4)Client ID:123a1234e1234567aa12345a1abcdefg1Client Secret:idcscs-12a1a123-a123-1234-1234-e1a05aabc123Domain URL: https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443
export ACCESS_TOKEN=$(curl -s -i -u"123a1234e1234567aa12345a1abcdefg1: idcscs-12a1a123-a123-1234-1234-e1a05aabc123" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443/oauth2/v1/token -d "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" |
tail -n +1 | grep -o '"access_token":"[^"]*' | cut -d'"'
-f4)
echo $ACCESS_TOKEN下方影像顯示上述命令在 Bash Shell 中的顯示方式。
它會顯示由多行 (超過 10 行) 所組成的輸出,其中包含英數字元。
(ROLE CLAIM NAME) as ssaddin.role and (MODIFIED FQN) as urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords:
附註:
使用步驟 1 中的 FQN,並以 "" 取代最後的 ":"。
例如,步驟 1 的 FQN 為:
urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords因此 MODIFIED FQN 應該是:
urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ordscurl -i -X POST (DOMAIN URL)/admin/v1/CustomClaims -H"Cache-Control: no-cache" -H"Accept:application/json" -H"Content-Type:application/json" -H"Authorization: Bearer $ACCESS_TOKEN" -d '{
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
],
"name": "(ROLE CLAIM NAME)",
"value": "$user.(MODIFIED FQN).*",
"expression": true,
"mode": "always",
"tokenType": "AT",
"allScopes": false,
"scopes": [
"ssaddin/rbac"
]
}'附註:
將Domain URL 取代為上述程式碼中的實際值。
您將檢視下列作為輸出:HTTP/1.1 201 Created。
啟用 Autonomous AI Database Schema 的 RBAC IAM 登入
- 在「SQL 工作表」的「導覽器」頁籤上,從「綱要」下拉式清單中選取
ORDS_METADATA。 - 從「物件類型」下拉式清單中選取
Packages。 - 在「搜尋」欄位中輸入
ORDS_SECURITY。搜尋函數會擷取開頭為ORDS_SECURITY的所有項目。 - 展開
ORDS_SECURITY套裝軟體。 - 在
CREATE_JWT_PROFILE上按一下滑鼠右鍵,然後按一下RUN。這會開啟RUN CODE對話方塊。在「執行程式碼…」對話方塊中,指定下列欄位值:- P_ISSUER - https://identity.oraclecloud.com/ 。此欄位必須為非空值,且必須以單一逗號填入。
- P_AUDIENCE - ssaddin/ 。此欄位必須是非空值的值。
- P_JWK_URL - 使用 /admin/v1/SigningCert/jwk 附加 DOMAIN URL 。它必須是以 https:// 開頭的非空值,並且以 JSON Web Key (JWK) 格式識別授權伺服器所提供的公開驗證金鑰。
您可以在 OCI 主控台之識別與安全導覽功能表的網域功能表中的「網域資訊」頁籤中,檢視網域 URL 。
- P_DESCRIPTION - 輸入此設定檔的描述。例如," RBAC JWT Demo confluence "。
- P_ALLOWED_AGE -"0"
- P_ALLOWED_SKEW -"0"
- P_ROLE_CLAIM_NAME - "ssaddin.role"
按一下將程式碼插入工作表中。
執行程序。
您將在輸出面板中檢視「PL/SQL 程序已順利完成」。
建立一個連線檔案
-
按一下「連線」窗格標頭上的新增按鈕,即可新增連線。這會開啟「新增連線」對話方塊。
- 在「新增連線」對話方塊中指定下列欄位:
- 連線名稱:輸入連線的名稱。
- Autonomous Database URL :輸入您要連線之 Autonomous AI Database 的 URL。從 Autonomous AI Database 的 Web UI 複製整個 URL。例如,輸入或複製下列連結 "https://<hostname>-<databasename>.adb.<region>.oraclecloudapps.com/" 以連線至資料庫。
- 綱要名稱:輸入您用來啟用 Autonomous Database 綱要的 IAM 登入的相同綱要。
- 選取連線類型: OCI IAM
- 網域 URL :從網域資訊頁籤輸入網域 URL 。
- 選取 RBAC IAM 類型。
- IAM 範圍:
ssaddin/rbac
建立連線之後,您可以與此網域的其他使用者共用連線。


















