java - 修改 Activity 的 AWS 联合用户策略/联合 token (AWSJavaSDK)

标签 java amazon-web-services amazon-s3

我使用此 API 来获取联合 token ,这些 token 将允许用户访问某些 AWS 资源,例如 S3 存储桶以及该存储桶内的目录 ( AWSJavaSDK Get Federated Token )。

是否可以撤销其所应用政策的某些方面?假设该用户在初始策略创建时有权访问某个目录,那么我只想撤销部分访问权限。是否可以在不重新发行另一个 token 的情况下实现此功能?以下是政策示例。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::productionapp"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::productionapp/*"]
    }
  ]
}

还有其他方法可以实现我的目标吗?

最佳答案

只有通过更改创建该临时凭证的 IAM 用户的权限,才能更改分配给从联合 token API 获取的临时凭证的权限。该用户不能是 root 用户,因为他们的权限无法更改。

我可能会使用Step Functions实现它:

  • 确定所需政策的数量。例如,有四个用户 A、B、C 和 D 将使用临时凭证。 1小时后,B和C将无法再访问某些资源。
  • 因此,我们需要两个 IAM 用户,一个用于 A 组和 B 组,一个用于 B 组和 C 组
  • 为为临时凭证标识的每组用户创建 IAM 用户
  • 创建 Lambda 函数GenerateTmpCredentials。该函数将生成 使用相应的 IAM 用户凭证为每个用户组提供临时凭证
  • 创建另一个 Lambda 函数 ChangePolicy。该函数将创建新的 需要撤销部分访问权限并将其分配给的用户组的策略 对应用户组的IAM用户
  • 现在将其连接到步骤函数工作流程(状态机)

请参阅上述工作流程的步骤函数状态机模板

{
  "StartAt": "GenerateTmpCredentials",
  "States": {
    "GenerateTmpCredentials": {
      "Type": "Task",
      "Resource": "<put arn of the GenerateTmpCredentials lambda>",
      "Next": "WaitOneHour"
    },
    "WaitOneHour": {
      "Type": "Wait",
      "Seconds": 3600,
      "Next": "ChangePolicy"
    },
    "ChangePolicy": {
      "Type": "Task",
      "Resource": "<put arn of the ChangePolicy lambda>",
      "End": true
    }
  }
}

上述工作流程将首先调用GenerateTmpCredentials函数,然后等待1小时,然后调用ChangePolicy策略函数。

您可以根据您的要求使用 API Gateway 或任何其他 Lambda 执行状态机。

关于java - 修改 Activity 的 AWS 联合用户策略/联合 token (AWSJavaSDK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54099586/

相关文章:

Python boto 列出卷名称后跟 "Volumes:"

python - 以写入模式从 S3 打开 csv 文件并将内容写入文件

amazon-web-services - 如何通过 EC2 上托管的静态站点将文件上传到 s3?

python - Boto3 创建一个新的 lambda 层

ruby-on-rails - 在 ubuntu 12.04 aws ec2 上安装 gem 时出错

python - 如何使用 joblib.dump 在 s3 上保存 sklearn 模型?

java - 恢复崩溃的输入流

java - tomcat7-maven-plugin 行为与 jSTL - 帮助使用 tomcat :run goal

Javassist - 向类添加注释不适用于反射

java - Firebase 设备到设备通知教程中的 "serviceAccountKey.json"指的是什么