-
Notifications
You must be signed in to change notification settings - Fork 0
/
template.yml
85 lines (80 loc) · 2.13 KB
/
template.yml
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
IAM Access Key Rotate
Parameters:
username:
Type: String
Description: The username of the IAM role that requires the key rotation
Default: testuser
Resources:
MyRole:
Type: AWS::IAM::Role
Properties:
RoleName: iam_key_rotate_role
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service: "lambda.amazonaws.com"
Action:
- "sts:AssumeRole"
Path: "/"
MyPolicy:
Type: AWS::IAM::Policy
Properties:
PolicyName: iam_key_rotate_policy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action:
- iam:DeleteAccessKey
- iam:GetAccessKeyLastUsed
- iam:UpdateAccessKey
- iam:CreateAccessKey
- iam:ListAccessKeys
Resource: "*"
- Effect: Allow
Action:
- logs:CreateLogGroup
- logs:CreateLogStream
Resource: "*"
- Effect: Allow
Action: logs:PutLogEvents
Resource: "*"
Roles:
- Ref: MyRole
KeyRotateFunction:
Type: AWS::Serverless::Function
Description: 'Rotate IAM Access Key'
Properties:
FunctionName: iam_key_rotate
CodeUri: src/
Handler: handler.lambda_handler
Role: !GetAtt MyRole.Arn
Runtime: python3.11
Timeout: 120
MemorySize: 215
Architectures:
- x86_64
Environment:
Variables:
USERNAME: !Ref username
Events:
ScheduleEvent:
Type: ScheduleV2
Properties:
ScheduleExpression: "rate(30 days)"
Events:
ScheduleEvent:
Type: Schedule
Properties:
Schedule: cron(0 0 1 * ? *)
Input: '{"state": "create"}'
ScheduleEvent2:
Type: Schedule
Properties:
Schedule: cron(0 0 5 * ? *)
Input: '{"state": "delete"}'