ノート:

API署名キーを使用したOCI Identity and Access Managementアイデンティティ・ドメインREST APIの活用

イントロダクション

Oracle Cloud Infrastructure Identity and Access Management (OCI IAM)アイデンティティ・ドメインAPIと統合する場合、APIリクエストを保護するためにOAuth 2.0が最も一般的に推奨される方法です。ただし、特定のユース・ケースでは、特にシンプルさと直感が最重要である場合、API署名キーは実行可能な代替手段を提供します。

このチュートリアルでは、API署名キーを使用してOCI IAMアイデンティティ・ドメインAPIを呼び出す方法を確認し、開発者や管理者により簡単でアクセス可能なオプションを提供します。

API署名鍵を使用する理由

API署名キーを使用すると、APIリクエストを簡単に認証できます。簡単に生成して使用できるため、OAuthトークン交換プロセスの複雑さがなくても、プログラムによる簡単なアクセスを必要とするアプリケーションに最適です。APIキーは、次のようなシナリオで特に役立ちます。

対象読者

OCI IAMのプロフェッショナル、開発者、管理者。

目標

API署名キーを使用してOCI IAMアイデンティティ・ドメインREST APIを活用します。これを効果的に実証するために、Pythonスニペットを使用してスクリプトを開発できます。このスクリプトは、認証にAPI署名キーを使用してOCI IAMアイデンティティ・ドメインAPIと対話する方法を示しています。また、グループの作成、ユーザーの作成、およびグループへのユーザーの割当ての基本操作についても説明し、セキュアなAPIリクエストを使用してこれらのアクションをプログラムで実行する方法を示します。APIキーを使用するとプロセスが簡略化され、これらの操作を自動化されたワークフローまたはスクリプトに簡単に統合できます。

前提条件

タスク1: Pythonパッケージのインポートおよび初期設定

スクリプトの初期部分では、APIキーを使用してOCI IAMアイデンティティ・ドメインAPIと対話するために必要なインポートおよび構成を設定します。

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

タスク2: クラスの定義および初期化

スニペットは、APIキーを使用してOCI IAMアイデンティティ・ドメイン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アイデンティティ・ドメインに新しいグループを作成するように設計されています。

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アイデンティティ・ドメインに新しいユーザーを作成するように設計されています。

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アイデンティティ・ドメインのグループに割り当てるプロセスを処理します。

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アイデンティティ・ドメインAPIを呼び出すと、OAuthに代わる簡単な方法が提供されます。シンプルさと使いやすさが重要な特定のユースケースに最適です。このチュートリアルの後、認証用のAPIキーの力を活用して、OCI IAMアイデンティティ・ドメインAPIと安全かつ効率的に統合できます。

管理タスクの自動化、内部ツールの構築、アプリケーションのプロトタイピングのいずれであっても、APIキーはOCIサービスと対話するための柔軟で便利な方法を提供します。

承認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。