将 S3 与自定义用户管理集成
Integrating S3 with custom user management
我们正在构建一个自定义应用程序(使用 LoopBack),它需要存储来自多个用户的许多大文件,因此我们自然会考虑 S3。我们之前做过类似的事情,客户端将文件上传到服务器,然后服务器处理它们并将它们上传到一个 AWS 帐户下的 S3,但是对于这个新应用程序,我们希望允许客户端(使用自定义 iOS 应用程序)使用 iOS S3 SDK 直接上传到自己的存储桶或文件夹。将在服务器上创建用户帐户。
有什么方法可以使用自定义代码处理 S3 authentication/authorization?例如,iOS 客户端是否可以请求一个临时令牌,允许他们上传到特定的 S3 存储桶或文件夹?或者我们是否需要为我们系统中的每个用户创建唯一的 IAM 用户?
这是个糟糕的主意吗?这听起来是个糟糕的主意。 :)
我发现了一个类似的问题here但是没有确定的答案。
更新:我发现 this 关于临时安全证书的文章看起来很有前途。如果构建移动应用程序,它还建议使用我从未使用过的 Cognito。
如果您的应用程序的用户已经过身份验证,您可以使用您的凭据在后端生成 pre-signed S3 url。这个 URL 然后可以返回到应用程序并用于上传文件。
它将避免必须创建单独的 IAM users/permissions and/or 管理存储桶策略。
查看上面的文档 here。
Cognito 是必经之路。您绝对不应为此创建 IAM 用户。 IAM 用于以编程方式或从控制台管理对 aws 服务的访问。此外,您需要在 ios 应用程序中对 IAM 访问密钥进行硬编码,这不是最佳做法。
https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html
不确定与您的情况有多相关。
您可以创建一个角色,允许上传到 s3 并使用 SAML web-based 身份进行身份验证,并允许特权承担该角色并获取临时凭证和令牌。
这将使 S3 上传的验证时间非常有限。即直到临时凭据过期。
我们正在构建一个自定义应用程序(使用 LoopBack),它需要存储来自多个用户的许多大文件,因此我们自然会考虑 S3。我们之前做过类似的事情,客户端将文件上传到服务器,然后服务器处理它们并将它们上传到一个 AWS 帐户下的 S3,但是对于这个新应用程序,我们希望允许客户端(使用自定义 iOS 应用程序)使用 iOS S3 SDK 直接上传到自己的存储桶或文件夹。将在服务器上创建用户帐户。
有什么方法可以使用自定义代码处理 S3 authentication/authorization?例如,iOS 客户端是否可以请求一个临时令牌,允许他们上传到特定的 S3 存储桶或文件夹?或者我们是否需要为我们系统中的每个用户创建唯一的 IAM 用户?
这是个糟糕的主意吗?这听起来是个糟糕的主意。 :)
我发现了一个类似的问题here但是没有确定的答案。
更新:我发现 this 关于临时安全证书的文章看起来很有前途。如果构建移动应用程序,它还建议使用我从未使用过的 Cognito。
如果您的应用程序的用户已经过身份验证,您可以使用您的凭据在后端生成 pre-signed S3 url。这个 URL 然后可以返回到应用程序并用于上传文件。
它将避免必须创建单独的 IAM users/permissions and/or 管理存储桶策略。
查看上面的文档 here。
Cognito 是必经之路。您绝对不应为此创建 IAM 用户。 IAM 用于以编程方式或从控制台管理对 aws 服务的访问。此外,您需要在 ios 应用程序中对 IAM 访问密钥进行硬编码,这不是最佳做法。
https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html
不确定与您的情况有多相关。
您可以创建一个角色,允许上传到 s3 并使用 SAML web-based 身份进行身份验证,并允许特权承担该角色并获取临时凭证和令牌。
这将使 S3 上传的验证时间非常有限。即直到临时凭据过期。