すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud SDK:アクセス認証情報の管理

最終更新日:Jun 04, 2026

Alibaba Cloud Python SDK V1.0 クライアントのアクセス認証情報を設定し、API リクエストを実行します。

SDK は 5 種類の認証情報タイプをサポートしています。デプロイ環境に適したものを選択してください。

認証情報タイプ

使用シナリオ

アクセスキーペア

RAM ユーザーアカウントを使用したローカル開発とテスト

STS 認証情報

短期アクセスが必要な場合、または他のサービスに一時的な権限を付与する必要がある場合

RAM ロール認証情報

アプリケーションが RAM ロールを引き受け、STS トークンの自動更新が必要な場合

ECS RAM ロール認証情報

RAM ロールが割り当てられた ECS インスタンス上でコードを実行する場合

デフォルト認証情報

SDK に環境変数から認証情報を自動的に検出させたい場合

説明

認証情報をソースコードにハードコードしたり、バージョン管理にコミットしたりしないでください。認証情報は環境変数またはシークレットマネージャーに保存してください。

アクセスキーペアの使用

RAM ユーザーとして認証する場合、ローカル開発およびテストにはこの方法を使用します。AccessKey ID と AccessKey Secret を環境変数に保存し、AcsClient に渡します。

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

# クライアントを初期化します。
client = AcsClient(
    os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # 環境変数から RAM ユーザーの AccessKey ID を取得します。
    os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 環境変数から RAM ユーザーの AccessKey Secret を取得します。
    '<region_id>'  # リージョン ID。
)

# API リクエストを作成し、パラメータを設定します。
request = DescribeRegionsRequest()

# リクエストを送信します。
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

STS 認証情報の使用

短期アクセスが必要な場合は、この方法を使用します。Security Token Service (STS) は、自動的に有効期限が切れる一時的なセキュリティ認証情報 (AccessKey ID、AccessKey Secret、セキュリティトークン) を発行します。

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import StsTokenCredential
from aliyunsdkecs.request.v20140526.AcceptInquiredSystemEventRequest import AcceptInquiredSystemEventRequest

cred = StsTokenCredential(
    sts_access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # 環境変数から STS が提供する AccessKey ID を取得します。
    sts_access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 環境変数から STS が提供する AccessKey Secret を取得します。
    sts_token=os.environ.get('ALIBABA_CLOUD_SECURITY_TOKEN')  # 環境変数から STS が提供する STS トークンを取得します。
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = AcceptInquiredSystemEventRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)

print(str(response, encoding='utf-8'))

RAM ロール認証情報の使用

アプリケーションが RAM ロールを引き受ける必要がある場合は、この方法を使用します。クライアントは、各 API 呼び出しの前に STS トークンを自動的にリクエストして更新します。また、STS トークンを手動でリクエストし、STS クライアントを作成することもできます。

import os

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import RamRoleArnCredential
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

cred = RamRoleArnCredential(
    sts_access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),  # 環境変数から RAM ユーザーの AccessKey ID を取得します。
    sts_access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),  # 環境変数から RAM ユーザーの AccessKey Secret を取得します。
    role_arn='<ram_role_arn>',
    session_role_name='<session_role_name>'
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = DescribeRegionsRequest()
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

ECS RAM ロール認証情報の使用

RAM ロールが割り当てられた ECS インスタンス上でコードを実行する場合は、この方法を使用します。SDK は、インスタンスメタデータエンドポイント http://100.100.100.200/latest/meta-data/ram/security-credentials/<role_name> から一時的なセキュリティ認証情報を自動的に取得します。コードに認証情報の設定は必要ありません。

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import EcsRamRoleCredential
from aliyunsdkecs.request.v20140526.AcceptInquiredSystemEventRequest import AcceptInquiredSystemEventRequest

cred = EcsRamRoleCredential(
    role_name='<ram_role_name>'
)

client = AcsClient(
    region_id='<region_id>',
    credential=cred
)

request = AcceptInquiredSystemEventRequest()
request.set_accept_format('json')
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

デフォルト認証情報の使用

SDK に認証情報を自動的に検出させたい場合は、この方法を使用します。SDK は、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を確認します。両方が設定されていて空でない場合、SDK はこれらを使用してデフォルト認証情報を作成します。

from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest

# クライアントを初期化します。
client = AcsClient(
    region_id='<region_id>'  # リージョン ID。
)

# API リクエストを作成し、パラメータを設定します。
request = DescribeRegionsRequest()

# リクエストを送信します。
response = client.do_action_with_exception(request)
print(str(response, encoding='utf-8'))

セキュリティのベストプラクティス

  • 環境変数またはシークレットマネージャーを使用してください。 認証情報をソースコードにハードコードしたり、リポジトリにコミットしたりしないでください。

  • 最小権限の原則に従ってください。 RAM ユーザーおよび RAM ロールには、必要な権限のみを付与してください。

  • 本番環境では RAM ロールまたは ECS RAM ロール認証情報を優先してください。 どちらの認証情報タイプも短期 STS トークンを発行し、自動的にローテーションされるため、認証情報の漏洩リスクが軽減されます。

  • アクセスキーペアを定期的にローテーションしてください。 使用されなくなったアクセスキーペアは取り消してください。

  • 一時的なアクセスには STS 認証情報を使用してください。 サードパーティまたは短期プロセスにアクセスを付与する場合は、長期間有効なアクセスキーペアを共有するのではなく、適切な有効期限を持つ STS 認証情報を発行してください。