배운 내용/Kubernetes
[crossplane] IAM
JooJY
2024. 5. 20. 17:02
반응형
vpc flow log 이걸 하려면 먼저 IAM이 있어야 함.
사용자 생성
apiVersion: iam.aws.upbound.io/v1beta1
kind: User
metadata:
name: joo-test-user # 리소스 이름, AWS 사용자 이름
spec:
forProvider: {} # 아무것도 안 넣어도 만들어짐.
providerConfigRef:
name: aaa
그룹 생성
apiVersion: iam.aws.upbound.io/v1beta1
kind: Group
metadata:
name: joo-test-group
spec:
forProvider:
path: /joo/
providerConfigRef:
name: aaa
그룹에 사용자 넣기
apiVersion: iam.aws.upbound.io/v1beta1
kind: GroupMembership
metadata:
name: joo-crossplane-groupmembership
spec:
forProvider:
groupRef:
name: joo-test-group
userRefs:
- name: joo-test-user
name: joo-group-membership
providerConfigRef:
name: aaa
정책 새로 만들기
apiVersion: iam.aws.upbound.io/v1beta1
kind: Policy
metadata:
name: joo-user-policy
spec:
forProvider:
policy: |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Resource": "*"
}
]
}
providerConfigRef:
name: aaa
역할 새로 만들기
inlinePolicy : 역할의 권한 정책(위에서 만든 정책이 들어간다.)
assumeRolePolicy : 역할의 신뢰 정책
원래는 위에서 만든 policy와 role을 따로 만들어야 하지만 한번에 만들 수도 있다.
이 경우 역할에 신뢰 정책이 추가되어 만들어진다.
apiVersion: iam.aws.upbound.io/v1beta1
kind: Role
metadata:
name: joo-user-role
spec:
forProvider:
assumeRolePolicy: |
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": {"Service": "vpc-flow-logs.amazonaws.com"},
"Action": "sts:AssumeRole"
}
]
}
inlinePolicy:
- name: joo-inline-policy
policy: |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Resource": "*"
}
]
}
providerConfigRef:
name: aaa
일단은 신뢰 정책만 만들어보자.
이렇게 하면 신뢰 정책만 있고 권한 정책이 없다.
apiVersion: iam.aws.upbound.io/v1beta1
kind: Role
metadata:
name: joo-user-role
spec:
forProvider:
assumeRolePolicy: |
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": {"Service": "vpc-flow-logs.amazonaws.com"},
"Action": "sts:AssumeRole"
}
]
}
providerConfigRef:
name: aaa
신뢰 정책, 권한 정책 합치기
이걸하고 나면 역할에 권한 정책이 추가된 것을 알 수 있다.
apiVersion: iam.aws.upbound.io/v1beta1
kind: RolePolicyAttachment
metadata:
name: joo-policy-attachment
spec:
forProvider:
policyArnRef:
name: joo-user-policy # policy 리소스 이름
roleRef:
name: joo-user-role # role 리소스 이름
providerConfigRef:
name: aaa
사용자에게 역할 부여하기
apiVersion: iam.aws.upbound.io/v1beta1
kind: UserPolicyAttachment
metadata:
name: joo-user-policy-attachment
spec:
forProvider:
policyArnRef:
name: joo-user-policy # policy 리소스 이름
userRef:
name: joo-test-user # 유저 리소스 이름
providerConfigRef:
name: aaa
그룹에 권한 부여하기
그룹 권한 정책에 정책이 추가된다.
apiVersion: iam.aws.upbound.io/v1beta1
kind: GroupPolicyAttachment
metadata:
name: joo-group-policy-attachment
spec:
forProvider:
policyArnRef:
name: joo-user-policy # 정책 리소스 이름
groupRef:
name: joo-test-group # 그룹 리소스 이름
providerConfigRef:
name: aaa
반응형