Раскрываем возможности AWS с помощью aws-sdk-go-v2: использование метода принятия роли

В этой статье блога мы погрузимся в мир AWS и изучим метод «Принять роль» библиотеки aws-sdk-go-v2. Мы раскроем тайну этой концепции, объясним ее значение и познакомим вас с различными методами ее эффективного использования в ваших проектах AWS. Итак, давайте начнем и раскроем возможности принятия на себя ролей в AWS!

Понимание предполагаемой роли.
При работе с AWS крайне важно обеспечить безопасный доступ к ресурсам. Принять роль — это функция AWS Identity and Access Management (IAM), которая позволяет предоставлять временный доступ пользователям или сервисам, принимая на себя указанную роль. Используя библиотеку aws-sdk-go-v2, вы можете легко интегрировать функциональность Assume Role в свои приложения Go.

Метод 1: использование API AssumeRole
aws-sdk-go-v2 предоставляет простой способ принять на себя роль с помощью API AssumeRole. Вот пример фрагмента кода:

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/credentials"
    "github.com/aws/aws-sdk-go-v2/service/sts"
)
func assumeRole() {
    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
        panic(err)
    }
// Create a new STS client
    client := sts.NewFromConfig(cfg)
    // Specify the role ARN to assume
    roleARN := "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"
    // Build the input params
    input := &sts.AssumeRoleInput{
        RoleArn:         aws.String(roleARN),
        RoleSessionName: aws.String("my-session"),
    }
// Assume the role
    resp, err := client.AssumeRole(context.TODO(), input)
    if err != nil {
        panic(err)
    }
// Access the temporary credentials
    credentials := resp.Credentials
    // Use the temporary credentials to interact with AWS resources
    // ...
}

Метод 2: использование API AssumeRoleWithWebIdentity
Если вы создаете приложения, использующие федерацию веб-идентификаторов, вы можете использовать API AssumeRoleWithWebIdentity, чтобы взять на себя роль. Вот пример фрагмента кода:

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/credentials"
    "github.com/aws/aws-sdk-go-v2/service/sts"
)
func assumeRoleWithWebIdentity() {
    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
        panic(err)
    }
// Create a new STS client
    client := sts.NewFromConfig(cfg)
    // Build the input params
    input := &sts.AssumeRoleWithWebIdentityInput{
        RoleArn:          aws.String("arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME"),
        RoleSessionName:  aws.String("my-session"),
        WebIdentityToken: aws.String("ID_TOKEN"),
        ProviderID:       aws.String("PROVIDER_ID"),
    }
// Assume the role with web identity
    resp, err := client.AssumeRoleWithWebIdentity(context.TODO(), input)
    if err != nil {
        panic(err)
    }
// Access the temporary credentials
    credentials := resp.Credentials
    // Use the temporary credentials to interact with AWS resources
    // ...
}

Используя библиотеку aws-sdk-go-v2 и метод Assume Role, вы можете повысить безопасность своих ресурсов AWS и эффективно управлять разрешениями. В этой статье мы рассмотрели два метода: AssumeRole и AssumeRoleWithWebIdentity. Эти методы позволяют вам программно брать на себя роли и безопасно получать доступ к ресурсам AWS. Включите эти методы в свои приложения Go и возьмите под контроль свою среду AWS!