AdSense

網頁

2024/5/16

Golang AWS IAM User分離Policy

Go以Google API Client Libraries來分離IAM User的Policy。


事前要求

參考「Golang AWS IAM User連接Policy」連接IAM User與Policy。


分離Policy

呼叫iam.Client.DetachUserPolicy,傳入iam.DetachUserPolicyInput參數分離user與policy。

iam.DetachUserPolicyInput欄位如下:

  • UserName - User的名稱。
  • PolicyArn - Policy的ARN

main.go

package main

import (
    "context"

    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/iam"
)

func main() {
    ctx := context.TODO()
    client := NewIamClient(ctx)

    input := &iam.DetachUserPolicyInput{
        UserName:  aws.String("user-1"),
        PolicyArn: aws.String("arn:aws:iam::[ACCOUNT_ID]:policy/S3Access"),
    }
    _, err := client.DetachUserPolicy(ctx, input)
    if err != nil {
        panic(err)
    }
}

func NewIamClient(ctx context.Context) *iam.Client {
    cfg, err := config.LoadDefaultConfig(
        ctx,
        config.WithRegion("ap-northeast-1"),
    )
    if err != nil {
        panic(err)
    }

    return iam.NewFromConfig(cfg)
}

github



測試

執行後在AWS console IAM服務檢視User下的[Permission]頁籤可看到原本連接的Policy已消失。


沒有留言:

AdSense