주:

API 서명 키를 사용하여 OCI ID 및 접근 관리 ID 도메인 REST API 활용

소개

Oracle Cloud Infrastructure Identity and Access Management(OCI IAM) Identity Domains API와 통합할 때 API 요청을 보호하는 데 가장 일반적으로 권장되는 방법은 OAuth 2.0입니다. 그러나 특정 사용 사례, 특히 단순성과 직접성이 가장 중요한 경우 API 서명 키는 실행 가능한 대안을 제공합니다.

이 사용지침서에서는 API 서명 키를 사용하여 OCI IAM ID 도메인 API를 호출하는 방법을 살펴보고, 개발자와 관리자가 보다 간단하고 접근 가능한 옵션을 제공합니다.

API 서명 키를 사용하는 이유

API 서명 키는 API 요청을 인증하는 간단한 방법을 제공합니다. 쉽게 생성하고 사용할 수 있으므로 OAuth 토큰 교환 프로세스의 복잡성 없이 프로그래밍 방식의 간단한 액세스가 필요한 애플리케이션에 이상적입니다. API 키는 특히 다음과 같은 시나리오에서 유용합니다.

대상

OCI IAM 전문가, 개발자 및 관리자

목표

API 서명 키를 사용하여 OCI IAM ID 도메인 REST API를 활용합니다. 이를 효과적으로 입증하기 위해 Python 코드 조각을 사용하여 스크립트를 개발할 수 있습니다. 이 스크립트는 인증에 API 서명 키를 사용하여 OCI IAM ID 도메인 API와 상호 작용하는 방법을 보여줍니다. 또한 그룹을 생성하고, 유저를 생성하고, 그룹에 유저를 할당하는 기본 작업을 다루며, 보안 API 요청을 사용하여 프로그래밍 방식으로 이러한 작업을 수행하는 방법을 보여줍니다. API 키를 사용하면 프로세스가 간소화되므로 이러한 작업을 자동화된 워크플로우 또는 스크립트에 쉽게 통합할 수 있습니다.

필요 조건

작업 1: Python 패키지 가져오기 및 초기 설정

스크립트의 초기 부분은 API 키를 사용하여 OCI IAM ID 도메인 API와 상호 작용하는 데 필요한 임포트 및 구성을 설정합니다.

import requests
import json
from oci.config import from_file
from oci.signer import Signer

작업 2: 클래스 정의 및 초기화

코드 조각은 API 키를 사용하여 OCI IAM ID 도메인 API와의 상호 작용을 관리하기 위한 클래스 APISignedRequest를 정의합니다.

class APISignedRequest():
    def __init__(self):
        global auth
        global identity_domain
        global config

        config = from_file()
        auth = Signer(
            tenancy=config['tenancy'],
            user=config['user'],
            fingerprint=config['fingerprint'],
            private_key_file_location=config['key_file']
        )
        identity_domain = 'https://idcs-############################.identity.oraclecloud.com'

작업 3: 그룹 생성 방법

APISignedRequest 클래스의 creategroup 메소드는 OCI IAM ID 도메인에 새 그룹을 생성하도록 설계되었습니다.

def creategroup(self):
    extra = "/admin/v1/Groups"
    body = {
        "displayName": "Example Group",
        "externalId": "123456",
        "urn:ietf:params:scim:schemas:oracle:idcs:extension:group:Group": {
            "creationMechanism": "api",
            "description": "Example Description"
        },
        "schemas": [
            "urn:ietf:params:scim:schemas:core:2.0:Group",
            "urn:ietf:params:scim:schemas:oracle:idcs:extension:group:Group",
            "urn:ietf:params:scim:schemas:extension:custom:2.0:Group"
        ]
    }

    response = requests.post(identity_domain + extra, auth=auth, json=body)
    jsonresp = json.loads(response.content)
    grpid = jsonresp.get("id")
    print("Group has been created")
    return grpid

작업 4: 사용자 메소드 생성

APISignedRequest 클래스의 createuser 메소드는 OCI IAM ID 도메인에 새 사용자를 생성하도록 설계되었습니다.

def createuser(self):
extra = "/admin/v1/Users"
body = {
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "name": {
    "givenName": "Test",
    "familyName": "User"
  },
  "userName": "testuser@example.com",
  "emails": [
    {
      "value": "testuser@example.com",
      "type": "work",
      "primary": True
    },
    {
      "value": "testuser@example.com",
      "primary": False,
      "type": "recovery"
    }
  ]
}

response = requests.post(identity_domain + extra, auth=auth, json=body)
jsonresp = json.loads(response.content)
userid = jsonresp.get("id")
print("User has been created")
return userid  

태스크 5: 그룹에 사용자 지정 방법

APISignedRequest 클래스의 assignuser 메소드는 OCI IAM ID 도메인의 그룹에 사용자를 지정하는 프로세스를 처리합니다.

def assignuser(self):
    extra = "/admin/v1/Groups/"
    obj = APISignedRequest()
    grpid = obj.creategroup()
    gid = str(grpid)
    userid = obj.createuser()

    body = {
      "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:PatchOp"
      ],
      "Operations": [
        {
          "op": "add",
          "path": "members",
          "value": [
            {
              "value": userid,
              "type": "User"
            }
          ]
        }
      ]
    }

    response = requests.patch(identity_domain + extra + gid, auth=auth, json=body)
    print("User has been assigned to the group")

작업 6: 흐름 실행

인스턴스 및 호출 메소드 생성: APISignedRequest의 인스턴스를 생성하고 assignuser를 호출하여 전체 플로우를 실행합니다.

obj = APISignedRequest()
obj.assignuser()

작업 7: OCI Cloud Shell에서 스크립트 사용

스크립트가 준비되면 로컬 시스템(Python 설치) 또는 Python 개발을 지원하는 IDE(통합 개발 환경)에서 쉽게 실행할 수 있습니다. OCI Cloud Shell을 사용하여 스크립트를 실행하고 원하는 보고서를 가져오고 있습니다.

  1. OCI 콘솔에 로그인하여 오른쪽 상단 모서리에서 OCI Cloud Shell을 열고 Python 스크립트 OCIAPISignedRequest.py를 업로드합니다.

: OCIAPISignedRequest.py는 위 작업 코드 조각을 사용하여 개발된 Python 스크립트입니다.

이미지 1

이미지 2

이미지 3

  1. python OCIAPISignedRequest.py 명령을 실행합니다.

결론

API 키를 사용하여 OCI IAM ID 도메인 API를 호출하면 OAuth에 대한 간단한 대안이 제공되며, 단순성과 사용 편의성이 중요한 특정 사용 사례에 적합합니다. 이 자습서 이후 인증에 강력한 API 키를 활용하여 OCI IAM ID 도메인 API와 안전하고 효율적으로 통합할 수 있습니다.

관리 작업 자동화, 내부 툴 구축 또는 애플리케이션 프로토타이핑 등 API 키는 OCI 서비스와 상호 작용할 수 있는 유연하고 편리한 방법을 제공합니다.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.