2012-01-17 17 views
4

Amazon S3でGetSessionToken/GetFederationTokenで一時セッションを使用していますが、各ユーザーがバケットを使用して書き込みを設定すると思っていたため、アップロード)の権限を各ユーザーに割り当てることができますが、Amazonアカウントごとにバケットの数に制限があるので、私はそのアイデアを断念しています。Amazon S3パーミッション

アップロードを許可するオブジェクトのキーのプレフィックスがアップロードされる場合にのみ、公開を許可してアップロードするなどのアクセス許可を設定するにはどうすればよいですか。

たとえば、ユーザー名Xがファイルをアップロードする場合、そのキーはX_filenameのようにする必要があります。

その他の方法でセキュリティを確保することができます。これはモバイルアプリ向けのもので、ファイルをアップロードするときに私たちのサーバーを通過するのは嫌です。

編集:

私は、以下のポリシーにGetFederationToken操作を試してみた

"{ 
    "Statement":[{ 
     "Effect":"Allow", 
     "Action":["s3:PutObject","s3:GetObject","s3:GetObjectVersion", 
     "s3:DeleteObject",\"s3:DeleteObjectVersion"], 
     "Resource":"arn:aws:s3:::user.uploads/john/*" 
    } 
    ] 
}" 

私はセッションでのバケットS3上user.uploadsとフォルダジョン

しかし、任意のアップロードを持っていますキーjohn/filenameでバケットuser.uploadsへのアクセスが拒否され、アクセスが拒否されました "

+0

これは動作しますが、すべてを確認する必要があります。たとえば、ポリシーが間違っている可能性があります。 - 内部テストのために広く開いてから、狭めてください。また、iOSからamazon S3へのすべての呼び出しは、あなたが戻ってきた連合トークンを使用する必要があります。 –

答えて

5

Amazon's Identity and Access Management (IAM)サービスは何ですかあなたは必要です。 documentationには数多くの例があり、そのうちのいくつかはあなたのシナリオに合っています。ドキュメントから

例5:パートナーは、この例では、企業のバケットに の特定の部分に

をファイルをドロップすることを許可し、我々は表しWidgetCoと呼ばれるグループを作成します パートナー企業の場合は、アクセスが必要なパートナー企業で特定のユーザー(または アプリケーション)のユーザーを作成し、 ユーザーをグループに追加します。

企業のバケットのディレクトリにある のディレクトリにPutObjectアクセス権を与えるポリシーを添付します: my_corporate_bucket/uploads/widgetco。

我々はまた、バケツで何か をやってからWidgetCoグループを防ぐためにしたいので、私たちは AWSアカウント内の任意のAmazon S3リソース上のputObject以外の任意の Amazon S3のアクションへのアクセス許可を拒否する声明を追加します。これは、AWSアカウントの他の場所にある の広範なポリシーが使用されている場合にのみ必要です。ユーザーにAmazon S3へのアクセス権が与えられます。

{ 
    "Statement":[{ 
     "Effect":"Allow", 
     "Action":"s3:PutObject", 
     "Resource":"arn:aws:s3:::my_corporate_bucket/uploads/widgetco/*" 
    }, 
    { 
     "Effect":"Deny", 
     "NotAction":"s3:PutObject", 
     "Resource":["arn:aws:s3:::my_corporate_bucket/uploads/widgetco/*"] 
    }, 
    { 
     "Effect":"Deny", 
     "Action":"s3:*", 
     "NotResource": ”arn:aws:s3:::my_corporate_bucket/uploads/widgetco/*" 
    }] 
} 

あなたは、各ユーザーの新しいIDを作成し、必要に応じてサブフォルダ(プレフィックス)へのアクセスを制御するためにそれを使用します。

+0

はい、ただしグループを使用していませんAWS以外のユーザーを使用しているAWSユーザーはありません。\ – forcewill

+0

フェデレーションユーザーは、どのユーザーとも同じポリシー文書を使用できます。しかし、ポリシーの文書は小さくする必要があります - 上記の例は連合のために働くかもしれませんが、私はそれを試していません。したがって、各ユーザーにカスタマイズされたポリシー文書を作成します。公式のAWS iOS SDKを使用する必要があります。これはセッショントークンをサポートしています。 –