首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >认知用户授权访问s3对象?

认知用户授权访问s3对象?
EN

Stack Overflow用户
提问于 2018-04-11 18:50:54
回答 1查看 3K关注 0票数 4

我有一些认知用户会写到一个S3桶中。我假设以下过程(也许还有一个更好的过程?):

1)创建桶

2)让用户使用认知进行身份验证,然后将资源写入桶中。

3)让用户从桶中检索资源,但前提是用户必须将资源写入桶(另一个要求是,对象必须使用设置为true的布尔值进行标记,因此我认为它必须通过lambda端点才能完成吗?)

我脑海中闪现的一件事是,也许有一种方法可以创建只有用户才能访问的桶,这样每个用户都有自己的桶吗?

想到的另一件事是用用户id标记对象,并且只允许lambda端点返回对象,如果用户有正确的用户id,并且布尔值标记被设置为true。

有什么想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 20:08:03

可以这样做:

  • S3桶-一个桶将用于所有用户文件。
  • IAM角色-带有策略语句,允许在上面为桶编写对象。
  • Lambda函数-将承担上述角色并返回临时凭据。

将文件存储在与每个用户相同的路径下(例如:S3://my/ username /file.zip)

从S3下载

Lambda函数可以生成预先签名的URL并返回它。检查认知用户名(来自JWT)是否等于文件夹名(如果不是-返回403状态)或-作为输入,只需获得文件名并连接认知用户名和文件名。

示例(Node.js):

代码语言:javascript
复制
...
const preSignedUrl = s3.getSignedUrl('getObject', {
    Bucket: '<BUCKET NAME>',
    Key: '<cognito user name>/<file name>', // path to object in bucket above
    Expires: 3600 // expiration time in seconds
});
....

Lambda角色需要允许从桶读取对象的策略。

上传到S3

Lambda函数可以承担角色 (重要的:仅对认知用户名文件夹限制策略-例如S3://my/ only /*)并返回临时凭据。有了它们,用户只能从浏览器上传到S3目录。

示例(Node.js):

代码语言:javascript
复制
...
const BUCKET_NAME = <...>
const COGNITO_USER_NAME = <...>

const restrictedPolicy = {
    Version:'2012-10-17',
    Statement: [{
        Effect: 'Allow',
        Action: 's3:PutObject',
        Resource: `arn:aws:s3:::${BUCKET_NAME}/${COGNITO_USERNAME}/*`
    }]
}

sts.assumeRole({
    DurationSeconds: 3600, // expiration time in seconds
    RoleArn: '<...>', // role that has write access to whole s3 bucket
    RoleSessionName: '<cognito username>', // not much importance
    Policy: JSON.stringify(restrictedPolicy) // write access only for Cognito username folder
}, (err, data) => {
    if(err) {
        ...
    } else {
        const temporaryCredentials = data.Credentials // Lambda needs to return that to API Gateway via callback
        ...
    }
});
...

Lambda角色需要允许承担角色的策略。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49782492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档