在 Amazon Web Services S3 中保护存储桶和资源访问?
Securing bucket- and resource access in Amazon Web Services S3?
我的网站上有一个上传表单,每个登录用户都可以上传视频。上传视频时,我在存储桶中生成一个随机名称的新文件夹,所有上传的视频都放在这个文件夹中。我想以某种方式将对上传文件的访问权限限制为上传视频的用户。建议的方法是什么?
我了解到您可以通过编程方式创建 IAM(AWS 身份和访问管理)用户:
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html
- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/IAM.html#createUser-property
“AWS IAM 简介”视频提到您可以限制每个 IAM 用户对 AWS 资源的访问:
这是一个好方法吗?
我的方法想法:
- 只有登录用户才能上传。他们在我们的数据库中有一个帐户
- 我们需要以某种方式将数据库用户连接到 IAM 标识。在数据库中存储一些东西?
- 当用户尝试上传视频文件时,检查数据库中的用户记录是否具有 IAM 身份,如果没有则创建一个
- 以某种方式存储用户有权访问的 AWS S3 资源。最好的方法是什么?
更多问题:
- 在 AWS S3 上有一个存储桶就够了吗?我需要每个人一个吗
- 我真的需要创建 IAM 用户来限制访问,还是可以通过其他方式实现?
Cognito 身份池非常适合这种情况。对于授权角色,给它一个看起来像这样的策略:
{
"Sid": "Access User-Specific Folder",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/${cognito-identity.amazonaws.com:sub}/*"
}
这会限制用户只能访问文件夹中与您的身份池中的唯一 ID 同名的对象。此方法仅使用一个桶。
只要您考虑以编程方式为每个用户创建自定义 IAM 角色或为每个用户创建不同的存储桶,答案就是使用 Cognito Identity。
我的网站上有一个上传表单,每个登录用户都可以上传视频。上传视频时,我在存储桶中生成一个随机名称的新文件夹,所有上传的视频都放在这个文件夹中。我想以某种方式将对上传文件的访问权限限制为上传视频的用户。建议的方法是什么?
我了解到您可以通过编程方式创建 IAM(AWS 身份和访问管理)用户:
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html
- https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/IAM.html#createUser-property
“AWS IAM 简介”视频提到您可以限制每个 IAM 用户对 AWS 资源的访问:
这是一个好方法吗?
我的方法想法:
- 只有登录用户才能上传。他们在我们的数据库中有一个帐户
- 我们需要以某种方式将数据库用户连接到 IAM 标识。在数据库中存储一些东西?
- 当用户尝试上传视频文件时,检查数据库中的用户记录是否具有 IAM 身份,如果没有则创建一个
- 以某种方式存储用户有权访问的 AWS S3 资源。最好的方法是什么?
更多问题:
- 在 AWS S3 上有一个存储桶就够了吗?我需要每个人一个吗
- 我真的需要创建 IAM 用户来限制访问,还是可以通过其他方式实现?
Cognito 身份池非常适合这种情况。对于授权角色,给它一个看起来像这样的策略:
{
"Sid": "Access User-Specific Folder",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/${cognito-identity.amazonaws.com:sub}/*"
}
这会限制用户只能访问文件夹中与您的身份池中的唯一 ID 同名的对象。此方法仅使用一个桶。
只要您考虑以编程方式为每个用户创建自定义 IAM 角色或为每个用户创建不同的存储桶,答案就是使用 Cognito Identity。