Amazon Web Services ブログ

Amazon S3 アップデート – セキュリティおよびアクセス制御のための 3 つの新しい機能



Amazon S3 をリリースしてから 1 年ほど後、私が参加した技術会議でエレベーターに乗っていたときに、何人かのデベロッパーが、データストレージをどうしているかとの質問に対して「S3 に投げるだけ」と答えているのを耳にしました。コメントがとても自然なものだったので、その瞬間をよく覚えています。そこで初めて、S3 がどれほど早く普及したのかを認識しました。

このリリース以降、当社は、数百の機能複数のストレージクラスを S3に追加してきました。また、1 か月間に 1 ギガバイトのデータを格納するコストをほぼ 85% 削減しました (S3 Standard では 0.15 USD から 0.023 USD、最も低額なものでは S3 Glacier Deep Archive の 0.00099 USD)。現在、お客様は、データレイクバックアップと復元災害復旧アーカイブクラウドネイティブアプリケーションなど、さまざまなユースケースをサポートするために、 S3 を使用しています。

セキュリティとアクセス制御
S3 のユースケースが拡大するにつれて、お客様からは、ミッションクリティカルなバケットやオブジェクトへのアクセスを規制する新しい方法を求める声が当社に寄せられています。当社は、何年も前に IAM ポリシーを追加し、2018 年には Block Public Access を追加しました。昨年には、S3 Access Points (Easily Manage Shared Data Sets with Amazon S3 Access Points) を追加しました。これは、数百ものアプリケーションとペタバイト規模のストレージを含み得る大規模な環境でのアクセスを管理するのに役立ちます。

本日、当社は、今月初めにリリースした他の 2 つの S3 セキュリティおよびアクセス制御機能のフォローオンとして、S3 Object Ownership をリリースします。3 つの機能はすべて、より強力な制御と高い柔軟性を実現するように設計されています。

Object Ownership – バケット内に新しく作成されたオブジェクトの所有者がバケットと同じであることを確認できるようになりました。

Bucket Owner Condition – 新しいオブジェクトを作成するとき、または他の S3 操作を実行するときに、バケットの所有権を確認できるようになりました。

Copy API via Access Points – Access Point 経由で S3 の Copy API にアクセスできるようになりました。

これらの新機能は、すべての AWS リージョンですべて追加料金なしで使用できます。各機能を見ていきましょう!

Object Ownership
適切なアクセス許可が設定されている場合、S3 ではすでに、複数の AWS アカウントが同じバケットにオブジェクトをアップロードできます。各アカウントはオブジェクトの所有権と制御を保持しています。この多対 1 のアップロードモデルは、バケットをデータレイクまたは別のタイプのデータリポジトリとして使用する場合に便利です。社内チームや外部パートナーはすべて、大規模かつ一元化されたリソースの作成に貢献できます。このモデルでは、バケット所有者はバケット内のオブジェクトを完全に制御できず、バケットポリシーを使用してオブジェクトを共有できないため、混乱を招く可能性があります。

新しく導入されたバケットごとの設定を使用して、バケット内で統一されたオブジェクト所有権を強制できるようになりました。これにより、多くのアプリケーションが簡素化され、これまでこれを行う一般的な方法となっていた Lambda によるセルフコピーの必要性がなくなります。この設定はアップロード中のアカウントにより見られる動作を変更するため、PUT リクエストには、bucket-owner-full-control ACL を含める必要があります。この ACL を含むことが必要となるバケットポリシーを使用することもできます。

開始するには、S3 コンソールを開き、バケットを見つけ、その [Permissions] (アクセス許可) を表示し、[Object Ownership] (オブジェクト所有者) をクリックし、[Edit] (編集) をクリックします。

次に、[Bucket owner preferred] (優先バケット所有者) を選択し、[Save] (保存) をクリックします。

先ほど説明したように、バケットポリシーを使用してオブジェクトの所有権を強制することができます (詳細については、オブジェクトの所有権についておよびナレッジセンターの記事を参照してください)。

多くの AWS のサービスでは任意のバケットにデータを配信しており、今般、この機能を利用できるようになりました。S3 Server Access LoggingS3 InventoryS3 Storage Class AnalysisAWS CloudTrail、および AWS Config は、お客様が所有するデータを配信するようになりました。クラスター設定で fs.s3.canned.aclBucketOwnerFullControl に設定することで、この機能を使用するように Amazon EMR を設定することもできます (詳細はこちら)。

この機能では、既存のオブジェクトの所有権は変更されないことに注意してください。また、以前よりも多くの S3 オブジェクトを所有することになります。これにより、レポートやその他のメトリクスに表示される数値が変更される可能性があります。

Object Ownership についての AWS CloudFormation のサポートは開発中であり、AWS re:Invent の前には準備が整う予定です。

Bucket Owner Condition
この機能を使用すると、所有しているバケットに書き込んであることを確認できます。

expectedBucketOwner パラメータまたは x-amz-expected-bucket-owner HTTP ヘッダーを使用して、数値の AWS アカウント ID を S3 バケットまたは Object API のいずれかに渡すだけです。ID は、サブジェクトバケットを所有していると考える AWS アカウントを示します。一致がある場合、リクエストは通常どおり進行します。そうでない場合は、403 ステータスコードで失敗します。

詳細については、Bucket Owner Condition を参照してください。

Copy API via Access Points
S3 Access Points を使用すると、共有データセットへのアクセスをきめ細かく制御できます。バケットで単一で複雑になり得るポリシーを管理する代わりに、アプリケーションごとにアクセスポイントを作成し、IAM ポリシーを使用してアクセスポイント経由で実行される S3 操作を規制できます (これらがどのように機能するかについては、Amazon S3 Access Points で共有データセットの管理が簡単にをお読みください)。

バケット名の代わりにアクセスポイントの ARN を使用して、S3 Access Points を S3 CopyObject API と組み合わせて使用できるようになりました (詳細については、アクセスポイントの使用を参照してください)。

今すぐ使用してみましょう
前述したように、これらの新機能はすべての AWS リージョンで追加料金なしで使用できます。

Jeff;