API キーは、OpenAPI ではサービスクレデンシャル (ServiceCredential) とも呼ばれ、特定のクラウドサービスにアクセスするために Resource Access Management (RAM) が発行する認証情報の一種です。これは、そのサービスへの API 呼び出し専用です。このトピックでは、API キーとそのライフサイクルを管理する方法について説明します。
特定のクラウドサービスの OpenAPI をプログラムから呼び出す際、認証に API キーを使用できます。各 API キーは作成時に単一のクラウドサービスに紐付けられ、そのサービスの API 呼び出しにのみ使用できます。この設計によりセキュリティスコープが限定され、AccessKey よりも安全な代替手段となります。
主な機能
サービスレベルの隔離:各 API キーは、作成時に単一のクラウドサービス (
ServiceNameで指定) に紐付けられます。そのサービスの API 呼び出しにのみ使用でき、サービスをまたいだ呼び出しには使用できません。権限ポリシーでそのスコープを拡張することはできません。権限範囲の最小化:API キーの有効な権限は、関連付けられた RAM ユーザーの権限と、紐付けられたクラウドサービスのスコープとの積集合です。RAM ユーザーが複数のサービスに対する権限を持っていても、API キーは指定されたサービスに制限されます。
RAM ユーザーに限定:API キーを作成できるのは RAM ユーザーのみです。Alibaba Cloud アカウント (ルートアカウント) は作成できません。この制限により、認証情報が漏洩した場合の潜在的な影響を軽減できます。
命名規則:
ServiceCredentialは OpenAPI および SDK で使用される用語ですが、コンソールではより分かりやすい用語の [API キー] が使用されます。どちらの用語も同じリソースを指します。
API キーと AccessKey の比較
API キーと AccessKey はどちらも RAM ユーザー向けの長期的な認証情報です。しかし、サービススコープ、発行方法、ユースケースが異なります。
機能 | API キー | AccessKey |
サービススコープ | 作成時に単一のクラウドサービスに紐付けられ、そのサービスの OpenAPI のみを呼び出すことができます。 | サービスによる制限はありません。RAM ユーザーがアクセスを認可されている任意のクラウドサービスを呼び出すことができます。 |
権限モデル | 有効な権限は、RAM ユーザーの権限と紐付けられたクラウドサービスのスコープの積集合です。 | RAM ユーザーに付与されたすべての権限を完全に継承します。 |
サポートされるアイデンティティ | RAM ユーザーのみが作成できます。Alibaba Cloud アカウント (ルートアカウント) はサポートされていません。 | Alibaba Cloud アカウントと RAM ユーザーの両方が作成できます。 |
クォータ | RAM ユーザーごと、クラウドサービスごとに 2 つです。このクォータは固定です。 | アイデンティティごとに 2 つです。 |
有効期間 | 有効期間は 1 日から 36,600 日まで、または無期限に設定できます。期限切れのキーは永久に無効化され、回復できません。 | 組み込みの有効期限メカニズムはなく、長期間有効です。 |
典型的なユースケース | AI モデルの呼び出し、サードパーティのプラットフォームや開発者ツールとの統合、およびサービスレベルの認証情報分離を必要とするシナリオ。 | 一般的な OpenAPI/SDK の呼び出し、サービスをまたいだオーケストレーション、CI/CD 自動化。 |
ライフサイクルステータス
API キーは、そのライフサイクル中に次の 3 つのステータスのいずれかになります。
アクティブ:認証情報を使用して、紐付けられたクラウドサービスの OpenAPI を呼び出すことができます。これは作成時のデフォルトのステータスです。
非アクティブ: 認証情報は一時的に無効になっています。
アクティブ状態に再アクティブ化できます。キーは、削除する前に非アクティブにする必要があります。期限切れ:有効期限に達すると、システムは自動的にキーのステータスを期限切れに変更します。認証情報は永久に無効になり、回復できません。新しいキーを作成する必要があります。
クォータと有効期間
クォータ: 各 RAM ユーザーは、1 つのクラウドサービスにつき、
アクティブなキーと非アクティブなキーを含め、最大 2 つの API キーを作成できます。このクォータは固定です。有効期限切れのキーはこのクォータにカウントされますが、削除されたキーはカウントされません。有効期間の単位:日。
値の範囲:コンソールには 1 日、7 日、30 日、90 日のプリセットが用意されており、キーを無期限に設定することもできます。カスタム値もサポートされています。
OpenAPI のデフォルト:
CreateServiceCredential操作を呼び出す際にCredentialAgeDaysパラメーターを省略した場合、キーは無期限に設定されます。有効期限切れは最終的な状態です: キーの有効期限が切れると、そのステータスは
有効期限切れに変わり、永久に無効になります。再度有効化することはできません。期限切れのキーを削除して、新しいキーを作成する必要があります。
セキュリティのベストプラクティスとして、無期限のキーを作成するのではなく、アプリケーションのライフサイクルに基づいて API キーに適切な有効期間を設定してください。ビジネスの中断を避けるために、有効期限が切れる前にアプリケーション内の認証情報をローテーションしてください。
サポートされるクラウドサービス
RAM コンソールで、[ユーザー詳細] ページ > [認証情報管理] タブ > [API キー] セクションに移動し、[API キーの作成] をクリックします。[クラウドサービス] ドロップダウンリストには、お使いのアカウントで利用可能なサービスが一覧表示されます。サポートされている API のリストについては、特定のサービスのドキュメントをご参照ください。
RAM ユーザーによる自己管理
十分な権限を持つ Alibaba Cloud アカウントまたは RAM 管理者は、RAM セキュリティ設定の AllowUserToManageServiceCredential 設定を使用して、RAM ユーザーが自身の API キーを管理できるかどうかを制御できます。この設定には、次の 2 つの状態があります。
自己管理を許可:RAM ユーザーは、管理者によって権限ポリシーで明示的に拒否されていない (Deny ポリシーが設定されていない) 限り、コンソールへのログインや OpenAPI の呼び出しを通じて、自身の API キーを作成、更新、または削除できます。
自己管理は許可されていません: RAM ユーザーは自身の API キーを管理できません。キーの作成と管理は、
ram:CreateServiceCredentialなどの権限を持つ管理者が行う必要があります。
認可方法
セキュリティとガバナンスの要件に基づいて、次の 3 つの方法のいずれかを選択して権限を付与できます。
RAM 管理者へのシステムポリシーの付与 (一元管理): 管理者に
AliyunRAMFullAccessシステムポリシーをアタッチします。これにより、管理者はすべてのユーザーの API キーを作成および管理できるようになります。このポリシーは RAM に対する完全な管理権限を提供し、専任チームがすべての RAM ユーザーの認証情報を管理する環境に適しています。グローバルな自己管理設定を有効にする (本番環境では非推奨): RAM セキュリティ設定で
AllowUserToManageServiceCredentialを有効にすると、Deny ポリシーによって明示的に制限されない限り、すべての RAM ユーザーは自身の API キーを管理できます。このオプションはチームに柔軟性を提供しますが、広範な権限を付与します。管理されたテスト環境またはサンドボックス環境でのみ使用することをお勧めします。カスタムポリシーのアタッチ (推奨): グローバルな自己管理設定を無効のままにし、自身の API キーを管理する必要がある特定の RAM ユーザーにのみカスタムポリシーをアタッチします。
Resourceをユーザー自身のアイデンティティに制限します。必要に応じて、ram:ServiceCredentialServiceName条件を追加して、特定のクラウドサービスに対する権限をさらに制限できます。この方法では、アカウント全体で自己管理を有効にすることなく、個々のユーザーに正確な権限を付与できます。
グローバル設定 AllowUserToManageServiceCredential が有効な場合、管理者がこれらのアクションを拒否する権限ポリシーをアタッチしない限り、すべての RAM ユーザーは自身の API キー (作成、有効化、無効化、削除の各操作を含む) を管理できます。本番環境では、この設定を無効のままにし、カスタムポリシーを使用して個別に権限を付与することを強く推奨します。
カスタムポリシーの例
以下のポリシーの例では、Resource を RAM ユーザー自身のアイデンティティに制限します。このポリシーを RAM ユーザーにアタッチすると、そのユーザーは指定されたアクションを自身に対して実行できるようになります。ポリシーを使用する前に、ACCOUNT_ID をアカウント ID (Alibaba Cloud アカウントセンターで確認できます) に置き換え、USER_NAME を対象の RAM ユーザーのログイン名 (@ サフィックスなし) に置き換えてください。
API キーの作成
このポリシーは、ユーザーが自身の API キーを作成および一覧表示することを許可しますが、キーの変更や削除は許可しません。これは、最小権限の原則に従って最小限の権限を付与するのに適しています。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME"
}
]
}完全なライフサイクル管理
このポリシーは、ユーザーが自身の API キーのすべての管理操作 (作成、一覧表示、名前変更、有効化、無効化、削除を含む) を実行することを許可します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials",
"ram:GetServiceCredential",
"ram:UpdateServiceCredential",
"ram:DeleteServiceCredential"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME"
}
]
}サービス固有の管理
このポリシーは、完全な管理権限に ram:ServiceCredentialServiceName 条件を追加したものです。これにより、ユーザーは特定のクラウドサービス (この例では ak.aliyuncs.com) の API キーのみを管理できるようになります。これは、クラウドサービスに基づいて資格情報管理を委任する、きめ細かい認可シナリオで役立ちます。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:CreateServiceCredential",
"ram:ListServiceCredentials",
"ram:GetServiceCredential",
"ram:UpdateServiceCredential",
"ram:DeleteServiceCredential"
],
"Resource": "acs:ram:*:ACCOUNT_ID:user/USER_NAME",
"Condition": {
"StringEquals": {
"ram:ServiceCredentialServiceName": "ak.aliyuncs.com"
}
}
}
]
}API キーのデータ構造
各 API キーは以下のコアフィールドで構成されています。OpenAPI によって返されるフィールド名には ServiceCredential というプレフィックスが付きますが、コンソール上のフィールド名はより分かりやすくなっています。
OpenAPI フィールド | コンソールフィールド | 説明 |
ServiceCredentialId | ID |
|
ServiceCredentialName | 名前 | キーの目的を識別するための分かりやすい名前です。コンソールによって |
ServiceName | クラウドサービス | バインドされたクラウドサービスの識別子 ( |
ServiceCredentialSecret | API キー | 認証情報のシークレット。作成時に一度だけ表示され、その後は API やコンソールから取得することはできません。 |
CreateTime | 作成日時 | UTC での作成日時 (ISO-8601 形式)。コンソールでは、この値がローカルタイムゾーンの時刻で表示されます。 |
ExpirationTime | 有効期限 | 認証情報が失効し、そのステータスが |
Status | ステータス | 認証情報のステータスです。有効な値は |
UserPrincipalName | ユーザー |
|
セキュリティに関する推奨事項
API キーには有効期間を設定してください。短期的なテストキーを無期限に設定することは避けてください。他のユースケースでは、サービスの使用サイクルに基づいて 30 日や 90 日などの適切な有効期間を設定し、有効期限が切れる前にキーをローテーションしてください。
キーを作成したら、すぐに API キーのシークレットをコピーするか、CSV ファイルをダウンロードしてください。ポップアップウィンドウを閉じると、シークレットを再度取得することはできません。シークレットを紛失した場合は、キーを削除して新しいキーを作成する必要があります。
API キーは機密性の高い認証情報として扱ってください。コードリポジトリ、設定ファイル、またはログに平文でコミットしないでください。シークレット管理サービスを使用するか、保存する前に KMS で暗号化することを推奨します。