IAM アイデンティティセンターの CloudTrail ユースケース - AWS IAM アイデンティティセンター

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM アイデンティティセンターの CloudTrail ユースケース

IAM アイデンティティセンターが発行する CloudTrail イベントは、さまざまなユースケースで役立ちます。組織は、これらのイベントログを使用して、 AWS 環境内のユーザーアクセスとアクティビティをモニタリングおよび監査できます。これにより、ログは誰がいつどのリソースにアクセスするかの詳細をキャプチャするため、コンプライアンスのユースケースに役立ちます。CloudTrail データをインシデント調査に使用して、チームがユーザーのアクションを分析し、疑わしい動作を追跡できるようにすることもできます。さらに、イベント履歴はトラブルシューティング作業をサポートし、時間の経過とともにユーザーのアクセス許可と設定に加えられた変更を可視化できます。

以下のセクションでは、監査、インシデント調査、トラブルシューティングなどのワークフローに役立つ基本的なユースケースについて説明します。

IAM アイデンティティセンターのユーザーが開始した CloudTrail イベントでユーザーを特定する

IAM Identity Center は、IAM Identity Center へのサインインや、MFA デバイスの管理を含む AWS アクセスポータルの使用など AWS CLI、CloudTrail イベントの背後にある IAM Identity Center ユーザーを識別できる 2 つの CloudTrail CloudTrail フィールドを出力します。

  • userId – IAM アイデンティティセンターインスタンスの ID ストアからの一意でイミュータブルなユーザー識別子。

  • identityStoreArn – ユーザーを含む ID ストアの Amazon リソースネーム (ARN)。

userID および identityStoreArn フィールドは、次の CloudTrail イベントログの例に示すように、onBehalfOf 要素内にネストされた userIdentity 要素に表示されます。このイベントログには、userIdentity タイプが「IdentityCenterUser」であるイベントのこれら 2 つのフィールドが表示されます。これらのフィールドは、userIdentity タイプが「Unknown」である認証済み IAM アイデンティティセンターユーザーのイベントでも確認できます。ワークフローは両方の型値を受け入れる必要があります。

"userIdentity":{ "type":"IdentityCenterUser", "accountId":"111122223333", "onBehalfOf": { "userId": "544894e8-80c1-707f-60e3-3ba6510dfac1", "identityStoreArn": "arn:aws:identitystore::111122223333:identitystore/d-1234567890" }, "credentialId" : "90e292de-5eb8-446e-9602-90f7c45044f7" }
ヒント

IAM Identity Center CloudTrail イベントの背後にあるユーザーを特定するには、 userIdidentityStoreArn を使用することをお勧めします。userIdentity 要素の userName および principalId フィールドは使用できなくなりました。監査やインシデント対応などのワークフローが username へのアクセスに依存している場合は、次の 2 つのオプションがあります。

  • サインイン CloudTrail イベントのユーザー名」の説明に従って、IAM アイデンティティセンターディレクトリからユーザー名を取得します。

  • サインインの additionalEventData 要素で IAM アイデンティティセンターが出力する UserName を取得します。このオプションは、IAM アイデンティティセンターディレクトリへのアクセスを必要としません。詳細については、「サインイン CloudTrail イベントのユーザー名」を参照してください。

username フィールドを含むユーザーの詳細を取得するには、ユーザー ID と ID ストア ID をパラメータとして ID ストアにクエリを実行します。このアクションは、DescribeUser API リクエストまたは CLI を使用して実行できます。以下にサンプル CLI コマンドを示します。IAM アイデンティティセンターインスタンスが CLI のデフォルトリージョンにある場合は、 region パラメータを省略できます。

aws identitystore describe-user \ --identity-store-id d-1234567890 \ --user-id 544894e8-80c1-707f-60e3-3ba6510dfac1 \ --region your-region-id

前の例の CLI コマンドの ID ストア ID 値を決定するには、 identityStoreArn値から ID ストア ID を抽出します。ARN の例では arn:aws:identitystore::111122223333:identitystore/d-1234567890、ID ストア ID は d-1234567890 です。または、IAM アイデンティティセンターコンソールの設定セクションの [ID ストア] タブに移動して、ID ストア ID を見つけることもできます。

IAM アイデンティティセンタディレクトリ内のユーザーの検索を自動化する場合は、ユーザー検索の頻度を見積もり、ID ストア API の IAM アイデンティティセンターのスロットル制限を検討することをお勧めします。取得したユーザー属性をキャッシュすると、スロットル制限内に収まるようになります。

同じユーザーセッション内のユーザーイベントの関連付け

サインインイベントで出力される AuthWorkflowID フィールドを使用すると、IAM アイデンティティセンターユーザーセッションを開始する前に、サインインシーケンスに関連付けられたすべての CloudTrail イベントを追跡できます。

AWS アクセスポータル内のユーザーアクションの場合、credentialId値はアクションのリクエストに使用される IAM Identity Center ユーザーのセッションの ID に設定されます。この値を使用して、 AWS アクセスポータルの同じ認証済み IAM Identity Center ユーザーセッション内で開始された CloudTrail イベントを識別できます。

注記

credentialId を使用して、サインインイベントを AWS アクセスポータルの使用などの後続のイベントに関連付けることはできません。サインインイベントで出力される credentialId フィールドの値は内部的に使用されるため、依存しないことをお勧めします。OIDC で呼び出されるAWS アクセスポータルイベントに対して出力される credentialId フィールドの値は、アクセストークンの ID と等しくなります。

IAM アイデンティティセンターのユーザーが開始した CloudTrail イベントでのユーザーバックグラウンドセッションの詳細の特定

次の CloudTrail イベントは、OAuth 2.0 トークン交換のプロセスをキャプチャします。このプロセスでは、ユーザーのインタラクティブセッションを表す既存のアクセストークン (subjectToken) が更新トークン (requestedTokenType) と交換されます。更新トークンを使用すると、ユーザーが長時間実行ジョブを開始した場合でも、ユーザーがサインアウトした後でも、ユーザーのアクセス許可を使用して実行を継続できます。

IAM アイデンティティセンターユーザーバックグラウンドセッションの場合、CloudTrail イベントには requestParameters 要素に resource という追加要素が含まれます。resource パラメータには、バックグラウンドで実行されるジョブの Amazon リソースネーム (ARN) が含まれます。この要素は CloudTrail イベントレコードにのみ存在し、IAM アイデンティティセンター CreateTokenWithIAM API または SDK レスポンスには含まれません。

{ "clientId": "EXAMPLE-CLIENT-ID", "grantType": "urn:ietf:params:oauth:grant-type:token-exchange", "code": "HIDDEN_DUE_TO_SECURITY_REASONS", "redirectUri": "https://example.com/callback", "assertion": "HIDDEN_DUE_TO_SECURITY_REASONS", "subjectToken": "HIDDEN_DUE_TO_SECURITY_REASONS", "subjectTokenType": "urn:ietf:params:oauth:token-type:access_token", "requestedTokenType": "urn:ietf:params:oauth:token-type:refresh_token", "resource": "arn:aws:sagemaker:us-west-2:123456789012:training-job/my-job" }

IAM アイデンティティセンターと外部ディレクトリ間のユーザーの関連付け

IAM アイデンティティセンターには、ディレクトリ内のユーザーを外部ディレクトリ内の同じユーザー (Microsoft Active Directory や Okta Universal Directory など) に関連付けるために使用できる 2 つのユーザー属性が用意されています。

  • externalId – IAM アイデンティティセンターユーザーの外部識別子。この識別子は、外部ディレクトリのイミュータブルなユーザー識別子にマッピングすることをお勧めします。IAM アイデンティティセンターは CloudTrail でこの値を出力しないことに注意してください。

  • username – ユーザーが通常サインインする、お客様が指定した値。値は変更できます (SCIM 更新など)。ID ソースが の場合 Directory Service、CloudTrail で IAM Identity Center が発行するユーザー名は、認証のために入力したユーザー名と一致することに注意してください。ユーザー名は、IAM アイデンティティセンターディレクトリのユーザー名と完全に一致する必要はありません。

    CloudTrail イベントにアクセスできるが、IAM アイデンティティセンターディレクトリにはアクセスできない場合は、サインイン時に additionalEventData 要素の下に出力されるユーザー名を使用できます。additionalEventData のユーザー名の詳細については、「サインイン CloudTrail イベントのユーザー名」を参照してください。

ID ソースが Directory Serviceの場合、これら 2 つのユーザー属性と外部ディレクトリ内の対応するユーザー属性のマッピングは IAM アイデンティティセンターで定義されます。詳細については、「IAM アイデンティティセンターと外部 ID プロバイダーディレクトリ間の属性マッピング」を参照してください。SCIM でユーザーをプロビジョニングする外部 IdP には、独自のマッピングがあります。ID ソースとして IAM アイデンティティセンターディレクトリを使用している場合でも、 externalId 属性を使用してセキュリティプリンシパルを外部ディレクトリに相互参照できます。

次のセクションでは、ユーザーの usernameexternalId を考慮して IAM アイデンティティセンターユーザーを検索する方法について説明します。

ユーザー名と externalId による IAM アイデンティティセンターユーザーの表示

GetUserId API リクエストを使用して対応する userId をリクエストし、前の例に示すように DescribeUser API リクエストを発行することで、既知のユーザー名の IAM アイデンティティセンターディレクトリからユーザー属性を取得できます。次の例は、特定のユーザー名の を ID ストア userIdから取得する方法を示しています。IAM アイデンティティセンターインスタンスが CLI を使用した場合のデフォルトリージョンにあるなら、 region パラメータを省略できます。

aws identitystore get-user-id \ --identity-store d-9876543210 \ --alternate-identifier '{ "UniqueAttribute": { "AttributePath": "username", "AttributeValue": "anyuser@example.com" } }' \ --region your-region-id

同様に、externalId がわかっている場合も、同じメカニズムを使用できます。前の例の属性パスを externalId 値で更新し、属性値を検索対象の特定の externalId で更新します。

Microsoft Active Directory (AD) と externalId でのユーザーの Secure Identifier (SID) の表示

場合によっては、IAM Identity Center は、 AWS アクセスポータルや OIDC API が出力するイベントなど、CloudTrail イベントの principalId フィールドでユーザーの SID を出力します。 APIs これらのケースは段階的に廃止されています。AD から一意のユーザー識別子が必要な場合は、ワークフローで AD 属性 objectguid を使用することをお勧めします。この値は、IAM アイデンティティセンターディレクトリの externalId 属性にあります。ただし、ワークフローで SID を使用する必要がある場合は、IAM アイデンティティセンター API では使用できないため、AD から値を取得します。

同じユーザーセッション内のユーザーイベントの関連付け では、 フィールドexternalIdusernameフィールドを使用して、IAM アイデンティティセンターユーザーと外部ディレクトリ内の一致するユーザーを関連付ける方法について説明します。デフォルトでは、IAM アイデンティティセンターは AD の objectguid 属性 externalId にマッピングされ、このマッピングは修正されています。IAM アイデンティティセンターを使用すると、管理者は AD の userprincipalname へのデフォルトのマッピングとは異なる方法で柔軟に username にマッピングできます。

これらのマッピングは、IAM アイデンティティセンターコンソールで表示できます。[設定][ID ソース] タブに移動し、[アクション] メニューで [同期の管理] を選択します。[同期の管理] セクションで、[属性マッピングの表示] ボタンを選択します。

IAM アイデンティティセンターで使用可能な一意の AD ユーザー識別子を使用して AD のユーザーを検索できますが、変更不可能な識別子であるため、クエリで objectguid を使用することをお勧めします。次の例は、Powershell で Microsoft AD をクエリして、ユーザーの 16809ecc-7225-4c20-ad98-30094aefdbcaobjectguid 値を使用してユーザーを取得する方法を示しています。このクエリへの正常なレスポンスには、ユーザーの SID が含まれます。

Install-WindowsFeature -Name RSAT-AD-PowerShell Get-ADUser ` -Filter {objectGUID -eq [GUID]::Parse("16809ecc-7225-4c20-ad98-30094aefdbca")} ` -Properties *