주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마치면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체합니다.
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 키는 특히 다음과 같은 시나리오에서 유용합니다.
-
자동화된 스크립트 및 cron 작업: 토큰을 관리할 필요 없이 인증이 간편합니다.
-
내부 애플리케이션: 신뢰할 수 있는 네트워크 내에서 실행되는 서비스의 복잡성 감소
-
프로토타입 생성 및 개발: 테스트 및 디버깅을 위한 빠른 설정입니다.
대상
OCI IAM 전문가, 개발자 및 관리자
목표
API 서명 키를 사용하여 OCI IAM ID 도메인 REST API를 활용합니다. 이를 효과적으로 입증하기 위해 Python 코드 조각을 사용하여 스크립트를 개발할 수 있습니다. 이 스크립트는 인증에 API 서명 키를 사용하여 OCI IAM ID 도메인 API와 상호 작용하는 방법을 보여줍니다. 또한 그룹을 생성하고, 유저를 생성하고, 그룹에 유저를 할당하는 기본 작업을 다루며, 보안 API 요청을 사용하여 프로그래밍 방식으로 이러한 작업을 수행하는 방법을 보여줍니다. API 키를 사용하면 프로세스가 간소화되므로 이러한 작업을 자동화된 워크플로우 또는 스크립트에 쉽게 통합할 수 있습니다.
필요 조건
-
OCI 계정: Oracle Cloud Infrastructure 계정에 액세스합니다.
-
API 서명 키: PEM 형식의 요청에 서명하기 위한 공개-개인 키 쌍입니다. 자세한 내용은 API 서명 키를 생성하는 방법을 참조하십시오.
-
OCI IAM 및 Python에 대한 기본적인 이해
-
OCI IAM ID 도메인 REST API에 대한 지식이 필요합니다.
-
애플리케이션 관리 권한이 있는 OCI IAM 사용자(ID 도메인 관리자, 보안 관리자 또는 애플리케이션 관리자)입니다.
-
Python 3.x가 설치되었습니다.
-
requests
및json
Python 패키지가 설치되었습니다.
작업 1: Python 패키지 가져오기 및 초기 설정
스크립트의 초기 부분은 API 키를 사용하여 OCI IAM ID 도메인 API와 상호 작용하는 데 필요한 임포트 및 구성을 설정합니다.
import requests
import json
from oci.config import from_file
from oci.signer import Signer
requests
: HTTP 요청을 만들기 위한 Python의 간단한 HTTP 라이브러리입니다.json
: JSON 데이터의 구문을 분석하기 위한 라이브러리입니다.from_file
: 파일에서 OCI 구성을 읽는 함수입니다.Signer
: API 키를 사용하여 HTTP 요청에 서명하기 위한 클래스입니다.
작업 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'
APISignedRequest
클래스: 이 클래스는 OCI IAM ID 도메인에 대한 API 요청을 수행하기 위한 메소드를 캡슐화합니다.init
메소드: 전역 변수auth
,identity_domain
및config
를 설정하여 클래스를 초기화합니다.config:
기본 OCI 구성 파일에서 로드됩니다.auth
: API 키로 API 요청에 서명하는 데 사용되는 서명자 인스턴스입니다.identity_domain
: ID 도메인 인스턴스의 기본 URL입니다.
작업 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
creategroup
메소드: ID 도메인에 새 그룹을 생성하는 POST 요청을 전송합니다.extra
: 그룹을 생성하기 위한 API 끝점입니다.body
: 그룹 세부정보를 포함하는 JSON 페이로드입니다.requests.post
:auth
서명자 및body
를 사용하여 POST 요청을 전송합니다.json.loads
: JSON 응답을 구문 분석합니다.grpid
: 응답에서 그룹 ID를 추출하고 반환합니다.
작업 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
createuser
메소드: POST 요청을 전송하여 Oracle Identity 도메인에 새 사용자를 생성합니다.extra
: 사용자를 생성하기 위한 API 끝점입니다.body
: 사용자 세부정보를 포함하는 JSON 페이로드입니다.requests.post
:auth
서명자 및body
를 사용하여 POST 요청을 전송합니다.json.loads
: JSON 응답을 구문 분석합니다.grpid
: 응답에서 사용자 ID를 추출하고 반환합니다.
태스크 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")
assignuser
메소드: 그룹 및 사용자 생성을 조정하고 그룹에 사용자를 지정합니다.extra
: 그룹 작업에 대한 API 끝점입니다.creategroup
: 그룹을 생성하고 해당 ID를 검색합니다.createuser
: 사용자를 생성하고 해당 ID를 검색합니다.body
: 멤버에 사용자를 추가하여 그룹에 패치를 적용하는 JSON 페이로드입니다.requests.patch
: 새 사용자로 그룹을 업데이트하도록 PATCH 요청을 전송합니다.
작업 6: 흐름 실행
인스턴스 및 호출 메소드 생성: APISignedRequest
의 인스턴스를 생성하고 assignuser
를 호출하여 전체 플로우를 실행합니다.
obj = APISignedRequest()
obj.assignuser()
작업 7: OCI Cloud Shell에서 스크립트 사용
스크립트가 준비되면 로컬 시스템(Python 설치) 또는 Python 개발을 지원하는 IDE(통합 개발 환경)에서 쉽게 실행할 수 있습니다. OCI Cloud Shell을 사용하여 스크립트를 실행하고 원하는 보고서를 가져오고 있습니다.
- OCI 콘솔에 로그인하여 오른쪽 상단 모서리에서 OCI Cloud Shell을 열고 Python 스크립트
OCIAPISignedRequest.py
를 업로드합니다.
주:
OCIAPISignedRequest.py
는 위 작업 코드 조각을 사용하여 개발된 Python 스크립트입니다.
python OCIAPISignedRequest.py
명령을 실행합니다.
결론
API 키를 사용하여 OCI IAM ID 도메인 API를 호출하면 OAuth에 대한 간단한 대안이 제공되며, 단순성과 사용 편의성이 중요한 특정 사용 사례에 적합합니다. 이 자습서 이후 인증에 강력한 API 키를 활용하여 OCI IAM ID 도메인 API와 안전하고 효율적으로 통합할 수 있습니다.
관리 작업 자동화, 내부 툴 구축 또는 애플리케이션 프로토타이핑 등 API 키는 OCI 서비스와 상호 작용할 수 있는 유연하고 편리한 방법을 제공합니다.
관련 링크
확인
- 작성자 - Gautam Mishra(수석 클라우드 엔지니어)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Leverage OCI Identity and Access Management Identity Domains REST APIs using API Signing Key
F99705-01
May 2024