このトピックでは、Alibaba Cloud Resource Access Management (RAM) を使用して M2M (マシンツーマシン) アプリケーションの AK フリーアクセスを設定し、STS 認証情報を取得する方法について説明します。
前提条件
-
M2M (マシンツーマシン) アプリケーションを設定済みであること。 詳細については、「M2M アプリケーション (マシンツーマシン権限管理)」をご参照ください。
OIDC アイデンティティプロバイダー (IdP) の作成
-
RAM 管理者として RAM コンソール にログインします。
-
左側のナビゲーションペインで、 を選択します。
-
ロールベースの SSO ログイン方式 タブで [OIDC] タブをクリックし、IdP の作成 をクリックします。
-
IdP の作成 ページで、アイデンティティプロバイダーのパラメーターを設定します。
パラメーター
説明
[ID プロバイダー名]
名前は Alibaba Cloud アカウント内で一意で、RAM の命名規則に準拠する必要があります。IDaaS とは関連付けられていません。
[発行者 URL]
-
発行者 URL は、外部アイデンティティプロバイダー (IdP) が M2M アプリケーションに割り当てる一意の識別子です。OAuth 2.0 などのプロトコルは、この URL を使用してトークンのソースを検証します。
-
Alibaba Cloud IDaaS はこの URL を使用して、外部 IdP からのトークンを検証します。この URL は、IDaaS の M2M クライアントアプリケーションの Issuer フィールドに対応します。
[フィンガープリント]
-
発行者 URL を入力した後、[Get Fingerprint] をクリックできます。Alibaba Cloud は発行者 URL にアクセスして、フィンガープリントを自動的に計算します。オンプレミスデバイス (例えば、OpenSSL を使用) でもフィンガープリントを計算し、Alibaba Cloud が計算したフィンガープリントと比較することを推奨します。
-
フィンガープリントが一致しない場合、発行者 URL が侵害されている可能性があります。発行者 URL を検証し、正しいフィンガープリントを入力する必要があります。
説明IdP 証明書をローテーションする予定がある場合は、ローテーションの前に Alibaba Cloud の OIDC アイデンティティプロバイダー設定に新しい証明書のフィンガープリントを追加してください。証明書をローテーションする前に、少なくとも 1 日待ってください。新しい証明書を使用して STS 認証情報を取得できることを確認した後、古いフィンガープリントを削除できます。
[クライアント ID]
-
この一意の識別子は、アプリケーションを外部 IdP に登録するときに生成されます。IdP は、このクライアント ID を OIDC トークンの
audクレームに含める必要があります。安全なロールの引き受けを確実にするために、RAM は STS 認証情報を要求する際に、トークン内のaudクレームがこのクライアント ID と一致することを検証します。 -
1 つの OIDC アイデンティティプロバイダーは、最大 50 個のクライアント ID に対応しています。これは、複数のアプリケーションが Alibaba Cloud リソースにアクセスする必要があるシナリオに適しています。
-
M2M (マシンツーマシン) アプリケーションシナリオでは、クライアント ID は、サーバー間認証のために IDaaS M2M アプリケーションで設定された オーディエンス に対応します。
[最も早い発行日時の制限]
RAM は、この時刻より前に発行された OIDC トークンを拒否します。デフォルト: 12 時間。有効範囲: 1〜168 時間。
[説明]
アイデンティティプロバイダーの説明。
-
-
IdP の作成 をクリックします。
OIDC アイデンティティプロバイダーロールの作成
-
RAM コンソールに移動し、 を選択します。
-
ポリシーエディターページで、[Identity Provider] を追加します。
[Visual editor] タブをクリックします。サブジェクトタイプに [Identity Provider] を選択し、[Add] をクリックします。
-
プリンシパルの追加 ダイアログボックスで、作成した[アイデンティティプロバイダー]を選択し、OK をクリックします。
[Identity provider type] を [OIDC] に設定します。
-
アイデンティティプロバイダーを追加すると、
oidc:issとoidc:audの条件がデフォルトで生成されます。これらの条件を編集または削除したり、新しい条件を追加したりできます。2 つのデフォルトの条件キーは
oidc:issとoidc:audで、演算子はいずれも StringEquals です。 -
次の例は、
subの条件式を追加する方法を示しています。ビジネス要件に基づいてこの条件を追加できます。条件を設定した後、OK をクリックします。説明-
[Condition value]:作成した M2M アプリケーションサーバーの クライアント ID を入力します。M2M アプリケーションの追加方法やオーディエンス識別子などの情報の表示方法については、「M2M アプリケーション (マシンツーマシン権限管理)」をご参照ください。
-
条件式の詳細については、「アクセスポリシーの要素」をご参照ください。
-
RAM OIDC がサポートする条件キーは、oidc:iss、oidc:aud、および oidc:sub の 3 つのみです。
[Operator] ドロップダウンリストで、
StringEqualsを選択します。 -
-
OK をクリックします。[Create Role] ダイアログボックスで、ロール名を入力し、OK をクリックします。
権限の付与
必要に応じて、既存のロールに 権限の付与 を追加できます。
ロールの [Permissions] タブで、[Grant Permission] をクリックします。[Authorized Scope] を [Alibaba Cloud Account] に設定します。アクセスポリシーの検索ボックスに idaas と入力し、AliyunYundunIdaasReadOnlyAccess システムポリシーを選択して、[OK] をクリックします。
M2M トークンの取得
curl コマンドの使用
-
次のプレースホルダーをアプリケーションの設定値に置き換えて、curl コマンドを実行し、トークンを取得します。
# <YOUR_SERVER_ISSUER_ENDPOINT>: 発行者。「リソースサーバーアプリケーション > 一般設定 > 発行者」でエンドポイントを見つけ、プレースホルダーを置き換えます。 # <YOUR_APP_CLIENT_ID>: クライアント ID。「クライアントアプリケーション > 一般設定 > 認証情報管理」で client_id を見つけ、プレースホルダーを置き換えます。 # <YOUR_APP_CLIENT_SECRET>: クライアントシークレット。「クライアントアプリケーション > 一般設定 > 認証情報管理」で client_secret を見つけ、プレースホルダーを置き換えます。 # <YOUR_SERVER_AUD_IDENTIFIER>: サーバー側のオーディエンス識別子。「リソースサーバーアプリケーション > サーバー側の権限付与 > 権限アプリケーション > オーディエンス識別子」でオーディエンス識別子を見つけ、プレースホルダーを置き換えます。 # curl --location --request POST 'https://<YOUR_SERVER_ISSUER_ENDPOINT>.aliyunidaas.com/api/v2/iauths_system/oauth2/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=<YOUR_APP_CLIENT_ID>' \ --data-urlencode 'client_secret=<YOUR_APP_CLIENT_SECRET>' \ --data-urlencode 'grant_type=client_credentials' \ # .all は Alibaba Cloud IDaaS の事前定義されたスコープ識別子です。指定されたオーディエンスで利用可能なすべての権限を要求します。 --data-urlencode 'scope=<YOUR_SERVER_AUD_IDENTIFIER>|.all' -
リクエストが成功すると、次のようなレスポンスが返されます。
xxx ~ % curl --location --request POST 'https://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=app_xxx4y54' \ --data-urlencode 'client_secret=CSHoxxx5ZQ6' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'scope=xxx.all' { "token_type": "Bearer", "access_token": "eyJrxxxi5rg", "expires_in": 3600, "expires_at": 1741336113 }
Postman の使用
-
パラメーターをアプリケーションの設定値に置き換えて、Postman でリクエストを送信し、トークンを取得します。
POST リクエストを
https://<IDaaS インスタンスドメイン>.aliyunidaas.com/api/v2/iauths_system/oauth2/tokenに送信します。リクエストボディでx-www-form-urlencodedを選択し、client_id、client_secret、grant_type(値はclient_credentials)、scopeのパラメーターを含めます。リクエストが成功 (200 OK) すると、次の形式の JSON レスポンスが返されます。{ "token_type": "Bearer", "access_token": "eyJrxxx...xxxDiCw", "expires_in": 3600, "expires_at": 1741331524 }access_tokenの値は Bearer トークンで、3,600 秒間有効です。
STS トークンの取得
Alibaba Cloud STS に慣れていない場合は、「STS とは」をご参照ください。
OpenAPI Explorer の使用
-
OpenAPI Explorer に移動し、AssumeRoleWithOIDC API を見つけます。
説明このトピックはデモンストレーションです。AssumeRoleWithOIDC API の詳細については、「AssumeRoleWithOIDC - OIDC ロールベース SSO のロールを引き受けるための一時的な ID 認証情報を取得する」をご参照ください。
-
必須パラメーターを入力し、[Initiate Call] をクリックして STS 認証情報を取得します。
重要-
OIDCProviderArn: OIDC アイデンティティプロバイダーロールの 基本情報 ページに移動します。信頼ポリシー から値を取得します。
-
RoleArn: OIDC アイデンティティプロバイダーロールの 基本情報 ページに移動し、ARN をコピーします。
-
OIDCToken: M2M トークンを入力します。
-
RoleSessionName: ロールセッションを識別するためのカスタム文字列です。
-