Watson Machine Learning 을 Python 클라이언트 라이브러리 또는 REST API와 함께 사용하려면 작업을 보안하도록 인증해야 합니다. 인증하는 다양한 방법과 선택한 서비스에 적용하는 방법에 대해 학습합니다.
공용 IBM Watson™ 서비스에 대해 인증된 요청을 작성하기 위해 IBM Cloud® Identity and Access Management(IAM)를 사용합니다. IAM 액세스 정책을 사용하면 단일 키에서 둘 이상의 리소스에 대한 액세스를 지정할 수 있습니다. 또한 사용자, 서비스 ID 및 서비스 인스턴스가 여러 API 키를 보유할 수 있습니다.
보안 개요
보안 요구사항에 대해 설명하는 섹션을 참조하십시오.
인증용 인증 정보
다음 용어는 이 주제에서 설명하는 보안 요구사항과 연관됩니다.
- API키 를 사용하면 Python 클라이언트 또는 API를 사용할 때 쉽게 인증할 수 있으며 여러 서비스에서 사용할 수 있습니다. API키는 액세스 권한을 부여하는 데 사용되므로 기밀로 간주됩니다. API키가 있는 모든 사용자가 서비스에 액세스할 수 있으므로 모든 API키를 비밀번호처럼 처리하십시오.
- IAM 토큰 은 IBM Cloud 서비스에 액세스하는 데 필요한 인증 토큰입니다. 토큰 요청에서 API키를 사용하여 토큰을 생성할 수 있습니다. IAM 토큰 사용에 대한 세부사항은 Watson Machine Learning API 인증을 참조하십시오.
API를 통해 서비스를 인증하려면 API에 인증 정보를 전달하십시오. 권한 헤더 또는 API 키에서 운반자 토큰을 전달할 수 있습니다.
API 키 생성
IBM Cloud 사용자 계정에서 API 키를 생성하려면 액세스 및 사용자 관리-API 키로 이동하여 사용자 계정의 API 키를 작성하거나 선택하십시오.
프로파일 및 설정 > 사용자 API키에서 API키를 생성하고 순환할 수도 있습니다. 자세한 정보는 사용자 API키 관리를 참조하십시오.
IAM 토큰으로 인증
IAM 토큰은 60분 동안 유효한 임시 보안 인증 정보입니다. 토큰이 만료되면 새 토큰을 생성합니다. 토큰은 리소스에 임시로 액세스하는 데 유용할 수 있습니다. 자세한 정보는 API 키를 사용하여 IBM Cloud IAM 토큰 생성을 참조하십시오.
서비스 레벨 토큰 얻기
서비스 레벨 토큰을 사용하여 인증할 수도 있습니다. 서비스 레벨 토큰을 생성하려면 다음 작업을 수행하십시오.
- 서비스 ID 작성에 대한 IBM Cloud 지시사항을 참조하십시오.
- 해당 서비스 ID에 대한 API키를 생성하십시오.
- 배치 가능한 자산을 보존할 공간을 여십시오.
- 액세스 제어 탭에서 서비스 ID를 추가하고 관리자 또는 편집자의 액세스 역할을 지정하십시오.
이 서비스 레벨 토큰을 API 스코어링 요청에 사용할 수 있습니다.
인터페이스
Python 클라이언트
watsonx.ai Python 클라이언트 를 참조하십시오.
watsonx.ai Python 클라이언트 오브젝트의 인스턴스를 작성하려면 Watson Machine Learning API 클라이언트에 인증 정보를 전달해야 합니다.
wml_credentials = {
"apikey":"123456789",
"url": " https://HIJKL"
}
from ibm_watson_machine_learning import APIClient
wml_client = APIClient(wml_credentials)
instance_id
를 명시적으로 제공하지 않더라도 청구 목적으로 연관된 공간 또는 프로젝트에서 선택됩니다. Watson Machine Learning 서비스의 플랜 및 청구에 대한 세부사항은 Watson Machine Learning 플랜 및 런타임 사용을 참조하십시오.
Python 클라이언트를 사용하여 모델을 인증한 후 스코어링하는 방법에 대한 예제는 샘플 노트북 을 참조하십시오.
REST API
Watson Machine Learning REST API 를 참조하십시오.
Watson Machine Learning REST API를 사용하려면 IBM Cloud Identity and Access Management (IAM) 토큰을 얻어야 합니다. 이 예제에서는 예제 키 대신 API키를 제공합니다.
cURL 예제
curl -k -X POST \
--header "Content-Type: application/x-www-form-urlencoded" \
--header "Accept: application/json" \
--data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
--data-urlencode "apikey=123456789" \
"https://iam.cloud.ibm.com/identity/token"
확보된 IAM 토큰에는 Bearer
라는 단어가 접두부로 추가되어야 하며 API 호출을 위해 권한 헤더에 전달되어야 합니다.
Python 예
import requests
# Paste your Watson Machine Learning service apikey here
apikey = "123456789"
# Get an IAM token from IBM Cloud
url = "https://iam.cloud.ibm.com/identity/token"
headers = { "Content-Type" : "application/x-www-form-urlencoded" }
data = "apikey=" + apikey + "&grant_type=urn:ibm:params:oauth:grant-type:apikey"
response = requests.post( url, headers=headers, data=data, auth=apikey )
iam_token = response.json()["access_token"]
Node.js 예제
var btoa = require( "btoa" );
var request = require( 'request' );
// Paste your Watson Machine Learning service apikey here
var apikey = "123456789";
// Use this code as written to get an access token from IBM Cloud REST API
//
var IBM_Cloud_IAM_uid = "bx";
var IBM_Cloud_IAM_pwd = "bx";
var options = { url : "https://iam.cloud.ibm.com/identity/token",
headers : { "Content-Type" : "application/x-www-form-urlencoded",
"Authorization" : "Basic " + btoa( IBM_Cloud_IAM_uid + ":" + IBM_Cloud_IAM_pwd ) },
body : "apikey=" + apikey + "&grant_type=urn:ibm:params:oauth:grant-type:apikey" };
request.post( options, function( error, response, body )
{
var iam_token = JSON.parse( body )["access_token"];
} );
상위 주제: 예측 배치 관리