10

セキュリティ上の目的で S3 バケットをロックダウンしようとしています - バケットに展開イメージを保存しています。

私がやりたいことは、自分のアカウントの EC2 インスタンスからのみhttp を介した匿名ダウンロードをサポートするバケット ポリシーを作成することです。

これを行う方法はありますか?

私が使用しようとしているポリシーの例 (それ自体を適用することはできません):

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::[my bucket name]",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:ec2:us-east-1:[my account id]:instance/*"
        }
      }
    }
  ]
}
4

2 に答える 2

3

これが通常どのように行われるかを明確にするためです。IAM ポリシーを作成し、それを新規または既存のロールにアタッチして、ec2 インスタンスをそのロールで装飾します。バケット ポリシーを介してアクセスを提供することもできますが、これは精度が低くなります。

以下の詳細:

  1. S3 バケットは、所有者以外はデフォルトで拒否されます。そのため、バケットを作成してデータをアップロードします。https://s3.amazonaws.com/MyBucketName/file.extを試すことで、ブラウザでファイルにアクセスできないことを確認できます。xml にエラー コード "Access Denied" が返されます。「NoSuchBucket」のエラー コードが表示された場合は、URL が間違っています。

  2. arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess に基づいて IAM ポリシーを作成します。以下のスニップのように見えます。「Resource」キーを見て、ワイルドカードに設定されていることに注意してください。これをバケットの arn に変更するだけです。" Resource": ["arn:aws:s3:::MyBucketName", "arn:aws:s3:::MyBucketName/*"]

  3. ポリシーを作成したので、このポリシーを自動的に付与する IAM ロールでインスタンスを修飾します。インスタンスに認証キーを入れる必要はありません。ロールに移動し、新しいロールを作成し、Amazon EC2 ロールを作成し、作成したばかりのポリシーを見つけると、ロールの準備が整います。

  4. 最後に、インスタンスを作成し、作成したばかりの IAM ロールを追加します。マシンに独自の役割がすでにある場合は、2 つの役割をマシンの新しい役割にマージするだけです。マシンが既に実行されている場合は、再起動するまで新しい役割を取得しません。

  5. これで準備完了です。マシンには、s3 共有にアクセスする権限があります。これで、次のコマンドを使用してファイルをインスタンスにコピーできます。地域を指定する必要があることに注意してください

    aws s3 cp --region us-east-1 s3://MyBucketName/MyFileName.tgz /home/ubuntu

「あいまいさによるセキュリティ」という用語は、映画でのみ使用されることに注意してください。何かが安全であることが証明されているか、安全でないかのいずれかです。

于 2016-04-12T20:55:30.217 に答える