署名付きリクエストの識別 - AWS 規範ガイダンス

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

署名付きリクエストの識別

署名付き URL を使用したリクエストの識別

Amazon S3 には、Amazon S3 サーバーのアクセスログとデータイベントというリクエストレベルで使用状況をモニタリングするための 2 つの組み込みメカニズムが用意されています。どちらのメカニズムでも、署名付き URL の使用状況を特定できます。 Amazon S3 AWS CloudTrail  

署名付き URL の使用についてログをフィルタリングするには、 認証タイプを使用できます。サーバーアクセスログについては、Authentication Type フィールド を調べます。これは、Amazon Athena テーブルで定義されているときに、通常 authtype という名前になります。については CloudTrail、 additionalEventDataフィールドAuthenticationMethodで を調べます。どちらの場合も、署名付き URLs を使用するリクエストのフィールド値は ですがQueryStringAuthHeader は他のほとんどのリクエストの値です。

QueryString の使用が、署名付き URLsに常に関連しているとは限りません。検索を署名付き URL の使用のみに制限するには、クエリ文字列パラメータ を含むリクエストを検索しますX-Amz-Expires。サーバーアクセスログについては、Request-URI を調べ、クエリ文字列に X-Amz-Expiresパラメータがあるリクエストを探します。 については CloudTrail、 requestParameters要素の X-Amz-Expires要素を調べます。

{"Records": [{…, "requestParameters": {…, "X-Amz-Expires": "300"}}, …]}

次の Athena クエリはこのフィルターを適用します。

SELECT * FROM {athena-table} WHERE authtype = 'QueryString' AND request_uri LIKE '%X-Amz-Expires=%';

AWS CloudTrail Lake の場合、次のクエリがこのフィルターを適用します。

SELECT * FROM {data-store-event-id} WHERE additionalEventData['AuthenticationMethod'] = 'QueryString' AND requestParameters['X-Amz-Expires'] IS NOT NULL

他のタイプの署名付きリクエストの特定

POST リクエストには、Amazon S3 サーバーアクセスログと HtmlFormに一意の認証タイプ もあります CloudTrail。この認証タイプはあまり一般的ではないため、これらのリクエストが環境で見つからない場合があります。

次の Athena クエリは、 のフィルターを適用しますHtmlForm

SELECT * FROM {athena-table} WHERE authtype = 'HtmlForm';

CloudTrail Lake の場合、次のクエリがフィルターを適用します。

SELECT * FROM {data-store-event-id} WHERE additionalEventData['AuthenticationMethod'] = 'HtmlForm'

リクエストパターンの識別

署名付きリクエストは、前のセクションで説明した方法を使用して確認できます。ただし、そのデータを役に立てるようにするには、パターンを見つける必要があります。クエリの簡単なTOP 10結果からインサイトが得られる場合がありますが、それだけでは不十分な場合は、次の表のグループ化オプションを使用してください。

グループ化オプション

サーバーアクセスログ

CloudTrail レイク

説明

User agent

GROUP BY useragent

GROUP BY userAgent

このグループ化オプションは、リクエストのソースと目的を見つけるのに役立ちます。ユーザーエージェントはユーザー提供であり、認証または認可メカニズムとしては信頼性がありません。ただし、ほとんどのクライアントは、少なくとも部分的に人間が読み取れる一意の文字列を使用しているため、パターンを探している場合は多くのことが明らかになる可能性があります。

リクエスタ

GROUP BY requester

GROUP BY userIdentity['arn']

このグループ化オプションは、リクエストに署名した IAM プリンシパルを見つけるのに役立ちます。これらのリクエストをブロックしたり、既存のリクエストの例外を作成したりすることが目的の場合、これらのクエリはその目的に十分な情報を提供します。IAM のベストプラクティスに従ってロールを使用すると、ロールの所有者が明確に識別され、その情報を使用して詳細を確認できます。

送信元 IP アドレス

GROUP BY remoteip

GROUP BY sourceIPAddress

このオプションは、Amazon S3 に到達する前の最後のネットワーク変換ホップでグループ化します。

  • トラフィックが NAT ゲートウェイを通過する場合、これは NAT ゲートウェイアドレスになります。

  • トラフィックがインターネットゲートウェイを通過する場合、これはインターネットゲートウェイにトラフィックを送信したパブリック IP アドレスになります。

  • トラフィックが の外部から発信された場合 AWS、これはオリジンに関連付けられているパブリックインターネットアドレスになります。

  • ゲートウェイ Virtual Private Cloud (VPC) エンドポイントを経由する場合、これは VPC 内のインスタンスの IP アドレスになります。

  • パブリック仮想インターフェイス (VIF) を通過する場合、これはリクエスタのオンプレミス IP、または IP アドレスのみを公開するプロキシサーバーやファイアウォールなどの中間 IP になります。

  • インターフェイス VPC エンドポイントを通過する場合、これは VPC 内のインスタンスからの IP アドレスである可能性があります。また、別の VPC またはオンプレミスネットワークの IP アドレスでもかまいません。パブリック VIFsと同様に、これは中間の IP アドレスである可能性があります。

このデータは、ネットワーク制御を課すことを目標としている場合に役立ちます。異なるネットワークがプライベート IP アドレスを重複させる可能性があるため、ソースを明確にするために、このオプションを endpoint (サーバーアクセスログの場合) や vpcEndpointId ( CloudTrail Lake の場合) などのデータと組み合わせる必要がある場合があります。

S3 バケット名

GROUP BY bucket_name

GROUP BY requestParameters['bucketName']

このグループ化オプションは、リクエストを受信したバケットを検索するのに役立ちます。これにより、例外の必要性を特定できます。