サービスプリンシパル

[更新: 2026年03月05日]

サービスプリンシパル機能についての説明です。

サービスプリンシパルとは

サービスプリンシパルは、人ではないシステムやアプリケーションがクラウドAPIにアクセスするための認証手段です。 通常、人は「ユーザ」で認証を行いますが、サービスプリンシパルは主に自動処理やシステム連携などの用途で利用されます。

操作する主体

認証手段

使う場面

ユーザ

管理画面やCLIの操作など

システム

サービスプリンシパル

サービス間のAPI連携

特徴

セキュアな認証手段:APIキーやユーザの認証情報を共有せず、アプリケーション専用の認証方式を提供します。

APIキーとの違い:認証情報に有効期限があり、ライフサイクル管理が明確です。また、アクセスレベルを付与する画面が異なります。

注意

  • 細かな権限設定は現時点では未対応です。
    現在提供されているアクセスレベルの範囲内での利用となります。

  • サービスプリンシパルによる操作の場合でも、イベントログ上で「APIキー」として表示されることがあります。
    (APIキー xxx(サービスプリンシパルのサービスID)、またはサービスプリンシパル xxx と表示されます)
    将来的にはサービスプリンシパル xxx の形式に統一予定です。

今後のアップデート情報や対象サービスの追加については、随時公式ドキュメントやお知らせにてご案内いたします。

作成方法

1. サービスプリンシパルの作成

左メニューから「サービスプリンシパル」をクリックします。

サービスプリンシパル一覧画面に遷移したら、右上の「サービスプリンシパルの作成」をクリックします。

サービスプリンシパル一覧画面

サービスプリンシパル作成画面に遷移したら、「サービスプリンシパル名」「説明(任意)」を入力し、「作成」をクリックします。

サービスプリンシパル作成画面

サービスプリンシパルが作成され、リソースIDが表示されます。

サービスプリンシパル詳細画面

2. ロールの付与

左メニューからIAMポリシーをクリックし、対象のプロジェクトを選択します。

IAMポリシー一覧に「サービスプリンシパル」の項目があるので、必要なロールを選択し保存をクリックします。

IAMポリシー詳細画面

利用方法

サービスプリンシパルを利用するケースとして2つの例を説明します。

  • さくらのクラウドの対応サービスから使う場合

  • その他から使う場合

さくらのクラウドの対応サービスから使う場合

※ 例としてWorkflowsから他サービスを実行する流れを説明します。

1. サービス側画面でサービスとサービスプリンシパルの関連付け

サービスプリンシパル詳細画面に戻り、サービスプリンシパルの「リソースID」をコピーします。

サービスプリンシパル詳細画面

Workflowsに遷移し、「サービスプリンシパル ID」に貼り付けてください。

Workflows詳細画面

2. サービスの実行

定義済みのWorkflowsの処理の中で、連携サービスが実行されます。 (例: オブジェクトストレージ)

その他の環境から使う場合

さくらのクラウドの対応サービス以外からサービスプリンシパルキーを使ってさくらのクラウドのサービスを実行する流れを説明します。

1. サービスプリンシパルキーの作成

1-1. さくらのクラウドホーム画面の左メニューから「サービスプリンシパル」をクリックします。

左メニューから「サービスプリンシパル」をクリック

1-2. 一覧からキーを設定するサービスプリンシパルを選択します。

キーを設定するサービスプリンシパルを選択

1-3. 「サービスプリンシパルキーの作成」をクリックします。

「サービスプリンシパルキーの作成」をクリック

1-4. 公開鍵の情報を入力し、「作成」をクリックします。
※ PEM形式のRSA公開鍵(2048ビット~4096ビット)を事前に作成してください。

公開鍵の情報を入力

1-5. 確認画面が表示されるので「作成」をクリックします。

確認画面が表示

1-6. 作成完了の画面が表示されるので「閉じる」をクリックします。

作成完了の画面が表示

2. アクセストークンの発行

サービスプリンシパルキーを使ってアクセストークンを発行するためには、手元にある秘密鍵で署名したJWTを作成する必要があります。

  • JWTのヘッダー

{
"alg": "RS256",
"kid": "$KID",
"typ": "JWT"
}
  • JWTのペイロード

{
"aud": "https://secure.sakura.ad.jp/cloud/api/iam/1.0/service-principals/oauth2/token",
"exp": 現在のUnix time + 5分,
"iat": 現在のUnix time,
"iss": "$SERVICE_PRINCIPAL_RESOURCE_ID",
"sub": "$SERVICE_PRINCIPAL_RESOURCE_ID"
}

作成・署名したJWTを利用してアクセストークンを発行します。
成功すると、レスポンスで有効期限つきのアクセストークンが返却されますので控えます。

curl -X POST "https://secure.sakura.ad.jp/cloud/api/iam/1.0/service-principals/oauth2/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer" \
     -d "assertion=$JWT" | jq

{
  "access_token": "******************************************************",
  "token_type": "Bearer",
  "token_expired_at": "2025-08-20T07:48:44.697659+00:00",
  "expires_in": 3600
}

3. サーバの操作

アクセストークンを利用して、さくらのクラウドのAPIを呼び出します。
認証スキームタイプはBearerです。

curl -H "Authorization: Bearer $TOKEN" -H "X-Requested-With: XMLHttpRequest" https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server

4. サービスプリンシパルキーの確認、無効化

4-1. 作成されたキーの情報を確認するには、サービスプリンシパルキーの一覧画面にアクセスします。
キーの有効状態を変更やキーの削除を行う場合は、一覧画面から対象のキーをクリックします。

サービスプリンシパルキーの一覧画面

4-2. 編集画面が表示されるので、KIDの情報を確認することができます。
キーの無効化を行う場合は、ラジオボタンを変更し「保存」をクリックすることで変更できます。
キーを削除したい場合は右上にある「サービスプリンシパルキーの削除」をクリックします。

サービスプリンシパルキーの編集画面