6

私は、非常に一般的なユースケースであるべきだと思うことに触れている投稿をたくさん読んできましたが、私が望むものや、それができない単純な理由を正確に見つけることはできませんでした.

S3にいくつかのファイルがあります。私が構築したフロントエンドを介して、特定のユーザーに特定のファイルへのアクセスを許可できるようにしたいと考えています。

これまでのところ、私はそれを次のように機能させました:

  • 組み込みのユーザーとグループを使用して、Djangoでフロントエンドを構築しました
  • S3 バケットをミラーリングするバケットのモデルがあります。
  • S3 権限を表すグループからバケットへの m2m 関係があります。
  • ユーザーはログインし、Django のユーザーに対して認証を行います。
  • ユーザーが表示できるバケットのリストを Django から取得します。
  • boto を使用して、それらのバケットからファイルへのリンクのリストを取得し、ユーザーに表示します。

これは機能しますが、理想的ではなく、気分も良くありません。バケットのミラーを保持する必要があり、AWS にすべてが組み込まれている場合、ユーザー/パスワードとアクセス許可の独自のリストも維持する必要があります。

私が本当に望んでいるのは、IAM でユーザーを作成し、IAM でグループ権限を使用して S3 バケットへのアクセスを制御することです。データや機能の重複はありません。私のアプリはユーザーに UN/PW を要求し、それを使用して IAM/S3 に接続し、バケットとファイルのリストを取得してから、ユーザーへのリンクを表示します。単純。

どうすればできますか、またはなぜできませんか?

私はこれを間違った方法で見ていますか?

これに対処する「正しい」方法は何ですか (私は推測します) 非常に一般的なユースケースですか?

4

2 に答える 2

1

あなたの考えは正しいです。代替案を見てみましょう。

  1. アプリはすべてのユーザーの API キーとシークレットを保存し、すべてを AWS IAM アクセス許可システムに委任します。アーキテクチャ的にはよりシンプルなソリューションですが、詳細がそれを台無しにする可能性があります. アプリは本当に安全である必要があり、非常に安全な方法でシークレット API キーをホストする必要があります。これは実際にはユースケースによって異なります。

    • すべての作業がインタラクティブなユーザーで行われる場合、システムは暗号化されたキーをユーザーのパスワードと共に保存し、ログイン プロセスの一部として復号化できます。これは、DB が危険にさらされた場合、キーを危険にさらすのに十分な情報がないことを意味します。
    • システムがバックグラウンドで非対話的な処理を行う必要がある場合、この情報を安全に保存するために複雑な手順を開発する必要があります。RightscaleDome9などの企業は、この種のプロセスを開発しました。チームにセキュリティ専門家がいない限り、このオプションはお勧めしません。
  2. アプリは単一の「強力な」API キーを使用して AWS に接続しますが、特定のユーザーがそのリソースでのそのアクションを許可されている場合は、AWS API にクエリを実行します。悲しいことに、私は同様の AWS api に慣れていないので、他の読者の何人かがそれについてコメントしたいと思うかもしれません。これは(可能であれば)最もシンプルで安全なソリューションです。

  3. AWS に保存されているデータ (ユーザー、グループ、ユーザー -> グループの割り当て) を使用するように既存のソリューションを拡張し、アクセス許可チェックのデータ ソースとしてユーザー/グループ ポリシーを使用します。このようにすると、AWS とのロジックの重複が発生しますが (これは問題ありません)、データの重複は発生しませ

于 2012-11-30T15:46:15.107 に答える
1

Amazon Cognito (2014 年リリース) を使用してユーザーの一意の ID を作成し、Amazon S3 や DynamoDB などの AWS リソースへの安全なアクセスのためにそれらを認証することを検討する必要があります。

AWS IAM ID、カスタム開発者 ID、Amazon IAM、Facebook、Twitter、Google などのパブリック ID プロバイダー、または OpenID Connect 互換プロバイダーを活用できます。

これは、Amazon Cognito の使用方法のアーキテクチャの概要です。 ここに画像の説明を入力

よくある質問はこちら - https://aws.amazon.com/cognito/faqs/

于 2017-05-12T21:27:38.827 に答える