Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修改活动AWS联合用户策略/联合令牌(AWSJavaSDK)_Java_Amazon Web Services_Amazon S3 - Fatal编程技术网

修改活动AWS联合用户策略/联合令牌(AWSJavaSDK)

修改活动AWS联合用户策略/联合令牌(AWSJavaSDK),java,amazon-web-services,amazon-s3,Java,Amazon Web Services,Amazon S3,我使用此API获取联邦令牌,允许用户访问某些AWS资源,如S3存储桶以及存储桶()中的目录 是否有可能撤销其适用政策的某些方面?假设这个用户在初始策略创建时有权访问某个目录,那么我只想撤销部分访问权。是否可以在不重新发出另一个令牌的情况下实现此功能?下面是一个示例策略 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"],

我使用此API获取联邦令牌,允许用户访问某些AWS资源,如S3存储桶以及存储桶()中的目录

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

{
  "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用户的权限,才能更改分配给从联合令牌API获得的临时凭据的权限。该用户不能是根用户,因为无法更改其权限

我可能会使用以下方法来实现:

  • 确定所需的政策数量。例如,有四个用户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
    }
  }
}
{
“StartAt”:“GenerateTmpCredentials”,
“国家”:{
“GenerateTempCredentials”:{
“类型”:“任务”,
“资源”:“,
“下一步”:“等待一小时”
},
“等待一小时”:{
“类型”:“等待”,
“秒”:3600,
“下一步”:“更改策略”
},
“变更政策”:{
“类型”:“任务”,
“资源”:“,
“结束”:正确
}
}
}
上述工作流将首先调用GenerateTempCredentials函数,然后等待1小时,然后调用ChangePolicy函数

您可以根据需要使用API网关或任何其他Lambda执行状态机