【问题标题】:S3 IAM policy issues with RORROR 的 S3 IAM 策略问题
【发布时间】:2020-10-22 20:31:17
【问题描述】:

想知道是否有人可以帮助我。 我目前有一个使用回形针的 ruby​​ on rails 应用程序。

我想将图像上传到 S3 存储。

我已经设法让它在公共环境中工作,但后来我将它设为私有,它却不行。

我做了什么。 创建了 s3 存储桶 创建的用户 分配的 s3fullaccess 策略 分配了自定义策略

{
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "s3:ListAllMyBuckets"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::*"
    },
    {
        "Action": "s3:*",
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::bucket-name"
    },
    {
        "Action": "s3:*",
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::bucket-name/*"
    }
]

}

然后我分配了 iam 策略。 使用用户访问权限和密钥配置应用程序

然而,每当尝试上传某些东西时,我都会收到错误

Excon::Error::Forbidden (预期(200) 实际(403 Forbidden) excon.error.response

我在网上寻找解决方案,但一无所获。

这是针对电子商务商店的,如果我要公开,可能会出现什么问题?

希望有人可以提供帮助 谢谢你:)

更新: 只需添加凭据文件及其使用方式 Secrets.yml 文件

development:
 aws_access_key_id: ‘XXXXXXX'
 aws_secret_access_key: 'XXXXX'
 s3_bucket_name: ‘XXXXXXX'
 s3_region_name: ‘XXXXXX’

production:
 aws_access_key_id: ‘XXXXXXX'
 aws_secret_access_key: 'XXXXX'
 s3_bucket_name: ‘XXXXXXX'
 s3_region_name: ‘XXXXXX’

test:
 aws_access_key_id: ‘XXXXXXX'
 aws_secret_access_key: 'XXXXX'
 s3_bucket_name: ‘XXXXXXX'
 s3_region_name: ‘XXXXXX’

回形针.rb

if Rails.application.secrets.aws_access_key_id
    Paperclip::Attachment.default_options.merge!(
        storage: :fog,
        fog_credentials: {
            provider: 'AWS',
            aws_access_key_id: Rails.application.secrets.aws_access_key_id,
            aws_secret_access_key: Rails.application.secrets.aws_secret_access_key,
            region: Rails.application.secrets.s3_region_name,
        },
        fog_directory: Rails.application.secrets.s3_bucket_name
    )

    Spree::Image.attachment_definitions[:attachment].delete(:url)
    Spree::Image.attachment_definitions[:attachment].delete(:path)
end

【问题讨论】:

    标签: ruby-on-rails ruby amazon-web-services amazon-s3 amazon-iam


    【解决方案1】:

    该策略将授予足够的权限以上传到 S3 存储桶。

    但是,您提到您创建了一个用户并分配了此自定义策略。 Rails 应用程序如何充当该用户?您如何向 rails 应用程序提供用户凭据?

    请用答案更新您的问题。因为这样做不正确很可能是问题所在。

    公开存储桶会遇到不同的问题,具体取决于您在其中存储的数据。但是,这几乎可以肯定是个坏主意——在保护您的应用程序时,您应该遵循最小权限原则。见https://en.m.wikipedia.org/wiki/Principle_of_least_privilege

    【讨论】:

    • 好吧,公开似乎是个坏主意。在:)中添加了详细信息
    • 我会看看,但您需要确保这些秘密不再有效(您已在此处公开)
    • 哈哈忘记改了,我现在就删掉以防万一
    • 编辑历史始终可用。您应该禁用密钥并在 AWS 上获取新密钥。
    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 2012-05-18
    • 2019-02-26
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2014-10-08
    • 2012-11-23
    相关资源
    最近更新 更多