-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgroups.tf
More file actions
57 lines (48 loc) · 1.32 KB
/
Copy pathgroups.tf
File metadata and controls
57 lines (48 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
data "aws_iam_user" "users" {
count = length(var.ssh_users)
user_name = element(var.ssh_users, count.index)
}
resource "aws_iam_group" "ssh" {
name = var.ssh_group_name
}
resource "aws_iam_group_membership" "ssh_users" {
name = aws_iam_group.ssh.name
group = aws_iam_group.ssh.name
users = data.aws_iam_user.users.*.user_name
}
# example admin policy w/ MFA token requirement
resource "aws_iam_group" "admins" {
name = "${var.env}-admins"
}
resource "aws_iam_group_membership" "admins" {
name = aws_iam_group.admins.name
group = aws_iam_group.admins.name
users = ["rochacon"]
}
resource "aws_iam_group_policy" "admins" {
name = "${var.env}-admins"
group = aws_iam_group.admins.id
policy = data.aws_iam_policy_document.admins.json
}
data "aws_iam_policy_document" "admins" {
statement {
effect = "Allow"
actions = ["iam:GetUser", "sts:GetSessionToken"]
resources = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:user/$${aws:username}"]
}
statement {
effect = "Allow"
actions = ["*"]
resources = ["*"]
condition {
test = "Null"
variable = "aws:MultiFactorAuthPresent"
values = ["false"]
}
condition {
test = "NumericLessThanEquals"
variable = "aws:MultiFactorAuthAge"
values = ["3600"]
}
}
}