如何限制 AWS Transfer 中的用户访问?

如何限制 AWS Transfer 中的用户访问?

我正在尝试设置 AWS Transfer 来托管多个用户帐户,例如:

/my-bucket/<username>

我已经定义了一个基本角色和一个缩小范围的角色,但它无法限制仅访问用户的个人主目录,并且用户仍然能够在存储桶中移动。

我需要防止用户看到其他用户的主目录数据。我读过一些关于执行 的内容chroot,但我正在使用转移用户,甚至不确定这是否适用于我的情况。

我希望有人能帮我解决这个问题,或者告诉我我做错了什么,以便按照我需要的方式修复它。以下是我定义的角色配置。

我的基本职责是:

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

以及缩小角色范围

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListHomeDir",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::${transfer:HomeBucket}/${transfer:UserName}"
        },
        {
            "Sid": "AWSTransferRequirements",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObjectVersion",
                "s3:DeleteObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::${transfer:HomeDirectory}*"
        }
    ]
}

答案1

根据 AWS创建范围缩小策略文档及其提供的示例,似乎您需要根据"Sid": "AllowListingOfUserFolder"该指导利用和构建不同的配置,但与其示例类似。

我引用并参考了帖子的具体部分,这些部分应该可以帮助您更好地确定如何构建 JSON 配置以获得所需的结果,就像他们那里提供的示例一样。

创建范围缩小策略

范围缩小策略是一种 AWS Identity and Access Management (IAM) 策略,它将用户限制在 Amazon S3 存储桶的某些部分。它通过实时评估访问权限来实现这一点。

当您需要向一组用户授予对 Amazon S3 存储桶特定部分的相同访问权限时,可以使用范围缩小策略。 例如,一组用户可能只需要访问主目录。该组用户共享相同的 IAM 角色

要创建范围缩小策略,请在 IAM 策略中使用以下策略变量:

  • ${transfer:HomeBucket}

  • ${transfer:HomeDirectory}

  • ${transfer:HomeFolder}

  • ${transfer:UserName}

下面的代码示例显示了范围缩小策略的示例。

{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Sid": "AllowListingOfUserFolder",
          "Action": [
              "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
              "arn:aws:s3:::${transfer:HomeBucket}"
          ],
          "Condition": {
              "StringLike": {
                  "s3:prefix": [
                      "${transfer:HomeFolder}/*",
                      "${transfer:HomeFolder}"
                  ]
              }
          }
      },
      {
          "Sid": "HomeDirObjectAccess",
          "Effect": "Allow",
          "Action": [
              "s3:PutObject",
              "s3:GetObject",
              "s3:DeleteObjectVersion",
              "s3:DeleteObject",
              "s3:GetObjectVersion",
              "s3:GetObjectACL",
              "s3:PutObjectACL"
          ],
          "Resource": "arn:aws:s3:::${transfer:HomeDirectory}*"
       }
  ]
}

来源

相关内容