リクエストの実行 - Amazon Simple Storage Service

リクエストの実行

Amazon S3 は REST サービスです。REST API または基礎となる Amazon S3 REST API をラップする AWS SDK (サンプルコードとライブラリを参照) ラッパーライブラリを使用して、Amazon S3 にリクエストを送信できます。これにより、プログラミング作業が簡易になります。

Amazon S3 とのすべてのやり取りは認証されるか匿名で行われます。認証は、アマゾン ウェブ サービス (AWS) 製品にアクセスを試みるリクエスタのアイデンティティを検証するプロセスです。認証リクエストには、リクエストの送信元を認証する署名値を含める必要があります。署名値の一部は、リクエスタの AWS アクセスキー (アクセスキー ID とシークレットアクセスキー) から生成されます。アクセスキーの取得の詳細については、AWS 全般のリファレンス の「セキュリティ認証情報の取得方法」を参照してください。

AWS SDK を使用している場合、指定したキーから、ライブラリによって署名が計算されます。ただし、アプリケーションで直接 REST API を呼び出す場合、署名を計算するコードを作成し、それをリクエストに追加する必要があります。

アクセスキーについて

以下のセクションでは、認証リクエストの実行に使用できるアクセスキーの種類について説明します。

AWS アカウント アクセスキー

アカウントアクセスキーを使用することで、アカウントが所有する AWS リソースにフルアクセスすることができます。アクセスキーの例を次に示します。

  • アクセスキー ID (半角英数字で構成された 20 文字)。例: AKIAIOSFODNN7EXAMPLE

  • シークレットアクセスキー (40 文字の文字列)。例: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

アクセスキー ID によって AWS アカウント が一意に識別されます。このアクセスキーを使用して認証リクエストを Amazon S3 に送信できます。

IAM ユーザーアクセスキー

お客様の会社用に 1 つの AWS アカウント を作成することができます。ただし、組織の AWS リソースへのアクセス権を必要とする社員が組織内に複数いる場合があります。AWS アカウント アクセスキーを共有するとセキュリティは低くなり、また、各社員に個別の AWS アカウント を作成することは実用的ではない場合があります。さらに、バケットやオブジェクトなどのリソースは別のアカウントが所有しているので、簡単に共有できません。リソースを共有するには、追加の作業でアクセス許可を付与する必要があります。

この場合、AWS Identity and Access Management (IAM) を使用して、AWS アカウントでユーザーと各自のアクセスキーを作成し、これらのユーザーに該当するリソースへのアクセス許可を付与する IAM ユーザーポリシーをアタッチします。このようなユーザーをより効率的に管理するために、IAM では、ユーザーのグループを作成し、グループ内のユーザー全員に適用されるグループレベルのアクセス許可を付与できます。

で作成および管理するユーザーは、IAM ユーザーと呼ばれますAWS 親アカウントは、ユーザーが にアクセスできるかどうかを制御しますAWS IAM ユーザーが作成するリソースは、親 AWS アカウント が管理し、支払いを行います。これらの IAM ユーザーは、各自のセキュリティ証明書を使用して Amazon S3 に認証リクエストを送信できます。お客様の AWS アカウント の下でユーザーを作成、管理する方法の詳細については、「AWS Identity and Access Management 製品詳細ページ」を参照してください。

一時的な認証情報

IAM では、IAM ユーザーと各自のアクセスキーを作成できるだけでなく、任意の IAM ユーザーに一時的なセキュリティ認証情報 (一時的なアクセスキーとセキュリティトークン) を付与して、AWS のサービスおよびリソースにアクセスできるようにすることもできます。また、 ではなく、使用しているシステムでユーザーを管理することもできますAWS このようなユーザーはフェデレーティッドユーザーと呼ばれます。また、このユーザーには、AWS リソースにアクセスするために作成したアプリケーションも含まれます。

IAM には、一時的なセキュリティ認証情報をリクエストするための AWS Security Token Service API が用意されています。一時的なセキュリティ認証情報をリクエストするには、AWS STS API または AWS SDK を使用できます。この API は一時的なセキュリティ認証情報 (アクセスキー ID およびシークレットアクセスキー) とセキュリティトークンを返します。これらの認証情報は、リクエスト時に指定した有効期間の間のみ有効です。アクセスキー ID およびシークレットキーの使用方法は、AWS アカウント または IAM ユーザーのアクセスキーを使用してリクエストを送信するときの使用方法と同様です。また、Amazon S3 に送信する各リクエストにトークンを含める必要があります。

IAM ユーザーは、これらの一時的なセキュリティ認証情報をリクエストした後、自分で使用することも、フェデレーティッドユーザーまたはアプリケーションに渡すこともできます。フェデレーションユーザー用に一時セキュリティ証明書をリクエストする場合、ユーザー名と、その一時セキュリティ証明書に関連付ける許可を定義した IAM ポリシーを指定する必要があります。フェデレーションユーザーに、一時証明書をリクエストした親 IAM ユーザーよりも多くの権限が付与されることはありません。

Amazon S3 にリクエストするときに、これらの一時的なセキュリティ認証情報を使用できます。API ライブラリによって、これらの認証情報を使用して必要な署名値が計算されて、リクエストが認証されます。失効した証明書を使用してリクエストを送信した場合、Amazon S3 はリクエストを拒否します。

REST API リクエストで一時セキュリティ証明書を使用してリクエストに署名する方法については、REST リクエストの署名と認証 を参照してください。AWS SDK を使用してリクエストを送信する方法については、AWS SDK を使用したリクエストの実行 を参照してください。

一時的なセキュリティ認証情報の IAM によるサポートの詳細については、IAM ユーザーガイドの「IAM の一時的なセキュリティ認証情報」を参照してください。

Amazon S3 リソースにアクセスする際のセキュリティを高めるには、バケットポリシーを設定して多要素認証 (MFA) を要求することができます。詳細については、「MFA が必要」を参照してください。Amazon S3 リソースにアクセスするために MFA を要求した後に、これらのリソースにアクセスできる唯一の方法は、MFA キーで作成された一時的な認証情報を提供することです。詳細については、AWS 多要素認証の詳細ページと IAM ユーザーガイド MFA 保護 API アクセスの設定を参照してください。

リクエストのエンドポイント

サービスの定義済みエンドポイントに対して REST リクエストを送信します。すべての AWS のサービスとそれに対応するエンドポイントのリストについては、AWS 全般のリファレンス の「リージョンとエンドポイント」を参照してください。