基于时间的访问控制

在某些情况下,我们可能希望在特定时间段内向特定用户或组提供访问权限,可以使用包含条件的内联策略的权限集来提供基于时间的访问控制。

创建Permission Set

IAM Identity Center里,创建一个新的permission set:

image-20231208212417880

选择自定义权限集

image-20231208212441175

指定策略页面中,使用内联策略,然后删除现有的大括号,将以下权限策略复制并粘贴到文本区域中:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                    "acm:Describe*",
                    "acm:List*",
                    "cloudtrail:Describe*",
                    "cloudtrail:Get*",
                    "cloudtrail:GetTrailStatus",
                    "cloudtrail:ListTags",
                    "cloudtrail:LookupEvents",
                    "cloudwatch:Describe*",
                    "cloudwatch:ListTagsForResource",
                    "config:BatchGetAggregateResourceConfig",
                    "config:BatchGetResourceConfig",
                    "config:Deliver*",
                    "config:Describe*",
                    "config:Get*",
                    "config:List*",
                    "detective:GetGraphIngestState",
                    "detective:ListGraphs",
                    "detective:ListMembers",
                    "ec2:Describe*",
                    "ec2:Get*",
                    "guardduty:DescribePublishingDestination",
                    "guardduty:Get*",
                    "guardduty:List*",
                    "iam:GenerateCredentialReport",
                    "iam:GenerateServiceLastAccessedDetails",
                    "iam:Get*",
                    "iam:List*",
                    "inspector:Describe*",
                    "kms:Describe*",
                    "kms:Get*",
                    "kms:List*",
                    "s3:Get*",
                    "s3:List*",
                    "secretsmanager:DescribeSecret",
                    "secretsmanager:GetResourcePolicy",
                    "secretsmanager:List*",
                    "securityhub:Describe*",
                    "securityhub:Get*",
                    "securityhub:List*",
                    "trustedadvisor:Describe*"
            ],
            "Resource": "*",
            "Condition": {
                "DateGreaterThan": {
                    "aws:CurrentTime": "2023-12-08T00:00:00Z"
                },
                "DateLessThan": {
                    "aws:CurrentTime": "2023-12-08T23:59:59Z"
                }
            }
        }
    ]
}

image-20231208212618811

点击下一步。 在指定权限集详细信息页面中,提供Permission Set的名称secAuditorTimeBased

image-20231208212702647

进入下一步,然后创建。

创建Group

让我们创建一个名为securityAuditors的新组

image-20231208212814359

组名称securityAuditors,然后点击创建:

image-20231208212846352

创建用户并添加到组

我们将创建一个新用户:secAuditUser。在Users页面点击Add user:

image-20231208212934550

添加用户页面中, 提供用户名,例如secAuditUser,其他选项如下:

image-20231208213052898

进入下一步,选择securityAuditors Group:

image-20231208213124802

进入下一步,创建用户,创建完成后,生成一次性密码,记录下来:

image-20231208213208447

将Permission Set分配给 AWS 账户

进入AWS accounts页面,选择希望用户有权访问的帐户:

image-20231208213324408

选择securityAuditors,然后进入下一步:

image-20231208214712203

在Permission Set中,选择secAuditorTimeBased,然后进入下一步:

image-20231208213448072

最后点击提交。

验证访问权限

建议在隐私浏览模式或不同的浏览器中执行以下步骤进行验证

使用创建secAuditUser时显示的URL登录,输入用户名和密码,并设置新的密码,进入控制台:

image-20231208214802671

进入AWS控制台后,在EC2页面,查看是否有权限列出来所有EC2:

image-20231208214926401

为了模拟过期,我们将通过选择过去的范围(2022-12-08)来模拟它。

IAM Identity Center中,进入Permission Set,并选择secAuditorTimeBased

image-20231208215020015

单击“Edit”按钮 编辑内联策略:

image-20231208215154115

将最后部分的时间编辑为去年:

image-20231208215238447

保存对权限集的更改,这会将权限集重新配置到 AWS 账户。

刷新EC2页面,我们将看到 secAuditUser 不再具有列出 EC2 实例的权限:

image-20231208215359634