수동으로 역할 기반 액세스 제어 구성

Oracle Cloud Infrastructure에서 JSON 웹 토큰(JWT) 사용자정의 클레임을 사용하여 역할 기반 액세스 제어(RBAC)를 구성할 수 있습니다.

JWT 사용자정의 클레임과 함께 RBAC를 허용하는 도메인 통합 애플리케이션을 생성하려면 다음을 수행합니다. 각 단계는 다음 절에서 자세히 설명합니다.

주:

이 문서에서는 설명 목적으로 Oracle Cloud InfrastructureDefault 도메인을 사용합니다.

사용자에 대한 사용자정의 속성 생성

사용자 엔티티는 속성 및 기타 정보를 속성으로 저장합니다. 예를 들어, 이름, 성, 사용자 로그인, 암호 등이 있습니다. Oracle Cloud Infrastructure에서 사용자정의 속성을 생성할 수 있습니다.

다음은 도메인의 각 사용자에게 지정된 역할을 저장할 사용자 정의 사용자 속성을 정의하는 예입니다.
  1. 햄버거 메뉴를 누르고 ID 및 보안으로 이동하여 도메인을 선택합니다. Name(이름) 아래에서 Default(기본값) 도메인을 누릅니다.
  2. 스키마 관리 탭으로 이동하고 사용자 속성을 선택합니다.

  3. 속성 추가를 누르고 다음을 지정합니다.
    • 표시 이름: ORDS RBAC
    • 이름: rbac_ords
    • 설명: ORDS에 대한 역할 기반 액세스 제어
    • 데이터 유형: 문자열 배열

    나머지 필드는 기본 상태로 둘 수 있습니다.



    추가를 누릅니다. 사용자정의 속성을 추가했습니다.

  4. 검색 필드에 사용자정의를 입력하여 새로 추가된 속성을 검색합니다. 목록에서 ORDS RBAC 속성을 확인합니다.

    속성 편집을 누릅니다.

  5. FQN(정규화된 이름)의 값을 복사하고 메모합니다.

    이 예에서 FQNurn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords입니다.

사용자정의 역할 지정

사용자정의 사용자 속성을 생성한 후에는 해당 속성 필드 내에서 사용자정의 역할 지정을 진행할 수 있습니다.
  1. IdentityDomainsDefault로 이동합니다. User Management(사용자 관리) 탭을 누르고 표시된 사용자 목록에서 사용자 이름을 선택합니다.



    사용자 편집을 누릅니다. 아래로 스크롤하여 Other Information(기타 정보) 필드를 찾아 ORDS RBAC 아래에 SQL Developer, SODA Developer를 입력합니다.

    ORDS 롤에 대한 자세한 내용은 Oracle REST Data Services 사용자 롤 정보에서 이 장을 참조하십시오.



    롤을 추가한 후 변경사항 저장을 누릅니다.

도메인 통합 애플리케이션 생성

사인인 시 JWT 토큰을 발행하는 도메인 내에서 통합 애플리케이션을 개발할 것입니다.

  1. IdentityDomainsDefault로 이동합니다. 통합 애플리케이션 탭을 누르고 애플리케이션 추가를 선택합니다.
  2. 기밀 애플리케이션을 누르고 워크플로우 시작을 선택합니다.
  3. 기밀 애플리케이션 추가 대화상자에서 다음 필드를 지정합니다.
    • 이름: 기밀 애플리케이션의 이름을 입력합니다. 예를 들어, Spreadsheet-Addin RBAC입니다.
    • 설명: 설명을 입력합니다. 예를 들어, 스프레드시트 추가 기능 역할 기반 접근 제어에 대한 통합 애플리케이션입니다.



    제출을 누릅니다.

    새로 추가된 Spreadsheet-Addin RBAC 응용 프로그램 페이지가 표시됩니다.

  4. 스프레드시트 추가 RBAC 페이지의 OAuth 구성 탭에서 OAuth 구성 편집을 누릅니다.



  5. 지금 이 애플리케이션을 리소스 서버 구성에서 지금 이 애플리케이션을 리소스 서버로 구성을 선택하십시오.
  6. OAuth 보호가 필요한 애플리케이션 API 구성에서 액세스 토큰 만료(초)로 3600을 선택합니다.
  7. 기본 대상자 필드에 ssaddin/를 입력합니다.
  8. 범위 추가를 누르고 rbac 범위를 추가합니다.



  9. 클라이언트 구성에서 다음 필드를 지정합니다.
    • 지금 이 애플리케이션을 클라이언트로 구성을 선택합니다.
    • 허용된 권한 부여 유형에서 암시적을 선택합니다.
    • 재지정 URL 필드에 다음 값을 입력합니다. https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html
    • 사후 로그아웃 URL 필드에 다음 값을 입력합니다. https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html



    제출을 누릅니다.

    주:

    애플리케이션을 활성화해야 합니다.

사용자정의 청구 정의

JWT 내에 사용자 역할을 포함하려면 사용자정의 클레임을 사용하여 첫 번째 섹션에 설정된 사용자정의 속성을 JWT에 매핑해야 합니다.

이를 위해 추가 임시 통합 애플리케이션을 생성하고 이를 통해 사용자정의 청구를 첨부해야 합니다.

ID 도메인 통합 애플리케이션 생성

추가 임시 통합 애플리케이션을 생성합니다.
  1. IdentityDomainsDefault로 이동합니다.
  2. 통합 애플리케이션 탭을 누르고 애플리케이션 추가를 선택합니다.
  3. 기밀 애플리케이션을 누르고 워크플로우 실행을 선택합니다.
    • 애플리케이션 이름 입력: ID 도메인 통합 애플리케이션
    • Description에 도메인 통합 응용 프로그램입니다.

    제출을 누릅니다.

  4. ID 도메인 통합 애플리케이션 페이지에서 OAuth 구성 탭을 선택합니다.
  5. 리소스 서버 구성에서 OAuth 구성 편집을 누릅니다. OAuth 구성 편집 대화상자에서 다음 필드를 지정합니다.

JWT에 대한 새 청구 생성

ID 도메인 관리자 애플리케이션에 대한 새 액세스 토큰을 검색하려면 CLIENT ID, CLIENT SECRETDOMAIN URL가 필요합니다.

이전 단계에서 생성한 도메인 통합 애플리케이션의 CLIENT IDCLIENT 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: 123a1234e1234567aa12345a1abcdefg1
  • Client Secret: idcscs-12a1a123-a123-1234-1234-e1a05aabc123
  • Domain URL: https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443
Bash 셸에서 다음 코드를 실행하여 위치 표시자 값을 적절히 바꿉니다.
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 셸에 어떻게 나타나는지 보여줍니다.



영숫자를 포함하는 여러 행(10 이상)으로 구성된 출력을 표시합니다.

(ROLE CLAIM NAME)ssaddin.role로 사용하고 (MODIFIED FQN)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_ords
curl -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 스키마에 대해 RBAC IAM 로그인 사용

다음 지침을 통해 ORDS는 JWT 베어러 토큰을 검증하고 보호된 리소스에 대한 액세스 권한을 부여할 수 있습니다.
  1. SQL Worksheet의 Navigator 탭에 있는 Schema drop-down list에서 ORDS_METADATA를 선택합니다.
  2. Object type drop-down list에서 Packages를 선택합니다.
  3. Search 필드에 ORDS_SECURITY를 입력합니다. 검색 함수는 ORDS_SECURITY로 시작하는 모든 항목을 검색합니다.
  4. ORDS_SECURITY 패키지를 확장합니다.



  5. CREATE_JWT_PROFILE을 마우스 오른쪽 단추로 누르고 RUN을 누릅니다. 그러면 RUN CODE 대화상자가 열립니다.
    코드 실행… 대화상자에서 다음 필드 값을 지정합니다.
    • P_ISSUER- https://identity.oraclecloud.com/. 이 필드는 Null이 아닌 값이어야 하며 단일 쉼표로 채워야 합니다.
    • P_AUDIENCE-ssaddin/ 이 필드는 Null이 아닌 값이어야 합니다.
    • P_JWK_URL - /admin/v1/SigningCert/jwk를 사용하여 DOMAIN URL을 추가합니다. https://로 시작하는 널이 아닌 값이어야 하며, 권한 부여 서버에서 제공하는 공용 확인 키를 JWK(JSON Web Key) 형식으로 식별해야 합니다.

      OCI 콘솔의 ID 및 보안 탐색 메뉴에 있는 도메인 메뉴에 있는 [도메인 정보] 탭에서 도메인 URL을 볼 수 있습니다.

    • P_DESCRIPTION - 이 프로파일에 대한 설명을 입력합니다. 예를 들어, "RBAC JWT Demo confluence"입니다.
    • P_ALLOWED_AGE-"0"
    • P_ALLOWED_SKEW-"0"
    • P_ROLE_CLAIM_NAME - "ssaddin.role"

    워크시트에 코드 삽입을 누릅니다.



    프로시저를 실행합니다.



    출력 패널에서 "PL/SQL procedure successfully completed."가 표시됩니다.

연결 파일 생성

  1. 접속을 추가하려면 [접속] 창의 머리글에 있는 추가 단추를 누릅니다. 그러면 새 연결 추가 대화상자가 열립니다.

  2. 새 연결 추가 대화 상자에서 다음 필드를 지정합니다.
    • 접속 이름: 접속의 이름을 입력합니다.
    • Autonomous Database URL: 접속할 Autonomous AI Database의 URL을 입력합니다. 자율운영 AI 데이터베이스의 웹 UI에서 전체 URL을 복사합니다. 예를 들어, 다음 링크 "https://<hostname>-<databasename>.adb.<region>.oraclecloudapps.com/"를 입력하거나 복사하여 데이터베이스에 연결합니다.
    • 스키마 이름: Enable IAM Login for Autonomous Database Schema에 사용하는 것과 동일한 스키마를 입력합니다.
    • OCI IAM 연결 유형을 선택합니다.
    • 도메인 URL: 도메인 정보 탭에서 도메인 URL을 입력합니다.
    • RBAC IAM 유형을 선택합니다.
    • IAM 범위: ssaddin/rbac



연결이 생성된 후 이 도메인의 다른 사용자와 공유할 수 있습니다.