まず、クライアント側のJSファイルにawsの「accessKey」と「securityKey」をハードコードしましたが、非常に安全ではなかったので、「aws-cognito」について読み、次の方法で新しいJSを実装しました。
それでも、誰かがハードコーディングされた「AWS-cognito-identity-poolID」を使用して私のs3にハッキングできる1つのことに混乱していますか?または、他のセキュリティ対策を講じる必要がありますか?
ありがとう、
ジェイキー
まず、クライアント側のJSファイルにawsの「accessKey」と「securityKey」をハードコードしましたが、非常に安全ではなかったので、「aws-cognito」について読み、次の方法で新しいJSを実装しました。
それでも、誰かがハードコーディングされた「AWS-cognito-identity-poolID」を使用して私のs3にハッキングできる1つのことに混乱していますか?または、他のセキュリティ対策を講じる必要がありますか?
ありがとう、
ジェイキー
回答:
あなたの質問の文脈でハッキングが何を意味するのかわかりません。
バケット内のオブジェクトの削除やアクセスなど、「誰でもファイルのアップロードとは異なる何かを実行できる」という意味だと思います。
Ninadはすでに上記で述べたように、「認証されていないIDへのアクセスを有効にする」[1]を有効にすることにより、現在のアプローチを使用できます。次に、2つの役割を作成する必要があります。そのうちの1つは「非認証ユーザー」用です。そのロールPutObject権限をS3バケットに付与できます。これにより、ページにアクセスするすべての人がS3バケットにオブジェクトをアップロードできます。IdentityPoolIdはパブリックな値(つまり、機密ではない)であるため、これはあなたが意図していることであり、セキュリティの観点からは問題ありません。
おそらく、Amazon Cognitoを使用して目的を達成する必要はないでしょう。たぶん、S3にバケットポリシーを追加して、PutObjectの権限を全員に付与するだけで十分です。
ただし、S3バケットへの直接公開書き込みアクセスを有効にすることはお勧めしません。
誰かがアップロードフォームをスパムしてWebサイトを悪用する場合、書き込み操作とデータストレージに対するS3料金が発生します。
Amazon CloudFrontを介してデータを送信し、レートベースのルール[2]でWAFを適用するか、S3アップロードの前にカスタムのレート制限サービスを実装することをお勧めします。これにより、悪意のあるアクティビティに適切に対応できるようになります。
[1] https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html
[2] https://aws.amazon.com/about-aws/whats-new/2019/08 / lower-threshold-for-aws-waf-rate-based-rules /
はい、クライアント側で「AWS-Cognito-Identity-Pool」を介して使用している場合、s3バケットは安全です。また、特定のドメインからのみアクションを許可するCORSを有効にして、誰かが直接アップロードまたはリストバケットを試行した場合に「アクセス-拒否されました」。