设置IAM角色
IAM角色是一种虚拟身份,同用户身份一样,可以关联权限对云上资源进行操作。您可以将IAM角色关联到云服务器BCC实例,在实例内部基于STS临时身份凭证调用其他云产品的 API(临时身份凭证将周期性更新)。由于临时身份凭证仅可在实例内部获取,并且无需配置AKSK,这不仅确保了云账号AKSK的安全性,还能够通过IAM实现精细化的控制与权限管理。
本文介绍如何进行实例IAM角色管理,例如绑定、修改及删除实例角色。
使用限制
一台BCC实例只能被授予一个IAM角色。
临时身份凭证每5分钟进行更新,若角色解绑,临时身份凭证可能在最长5分钟后失效。
操作步骤
创建IAM角色
1、登录控制台,鼠标移入右上角头像,点击“多用户访问控制”。
2、进入“多用户访问控制”控制台,选择“角色管理”,点击“创建角色”。输入“角色名称”,载体选择云产品,载体实体选择“云服务器BCC”,策略管理选择需要对该角色赋予的权限。点击“确定”完成角色的创建。
实例绑定IAM角色
1、进入云服务器BCC控制台,在实例列表选择您要绑定或者修改角色的实例,在右侧操作列单击 “更多 - 实例设置 – 设置IAM角色”,如下图所示。
2、在弹出的 设置IAM角色 对话框中点击选择IAM角色,单击确认按钮,实例绑定IAM角色成功。
获取实例IAM角色的临时身份凭证
您可以在BCC实例内部通过访问元数据(meta-dada) 获取到临时访问凭证。命令如下:
curl 169.254.169.254/latest/meta-data/sts-credential
使用实例IAM角色调用API
下文以部署在Linux BCC实例上的Go应用程序调用对象存储BOS下载文件接口为例,为您介绍BCC实例IAM角色的使用方法。
import (
"fmt"
"github.com/baidubce/bce-sdk-go/auth" //导入认证模块
"github.com/baidubce/bce-sdk-go/services/bos" //导入BOS服务模块
"github.com/baidubce/bce-sdk-go/services/sts" //导入STS服务模块
)
func main() {
// 获取实例里的临时身份凭证
accessKeyId = getAccessKeyId()
secretAccessKey = getSecretAccessKey()
sessionToken = getSessionToken()
bosClient, err := bos.NewClient(accessKeyId, secretAccessKey, sessionToken)
if err != nil {
fmt.Println("create bos client failed:", err)
return
}
stsCredential, err := auth.NewSessionBceCredentials(
accessKeyId,
secretAccessKey,
sessionTokenn)
if err != nil {
fmt.Println("create sts credential object failed:", err)
return
}
bosClient.Config.Credentials = stsCredential
// 提供Bucket和Object,直接获取一个对象
res, err := bosClient.BasicGetObject(bucketName, objectName)
// 获取ObjectMeta
meta := res.ObjectMeta
// 获取Object的读取流(io.ReadCloser)
stream := res.Body
// 确保关闭Object读取流
defer stream.Close()
// 调用stream对象的Read方法处理Object
...
}
其他操作
修改实例的IAM角色
1、进入云服务器BCC控制台,在实例列表选择您要绑定或者修改角色的实例,在右侧操作列单击 “更多 - 实例设置 – 设置IAM角色”,如下图所示。
2、在弹出的 设置IAM角色 对话框中点击IAM角色下拉选择目标IAM角色,单击确认按钮,实例IAM角色修改成功。
收回实例的IAM角色
1、进入云服务器BCC控制台,在实例列表选择您要绑定或者修改角色的实例,在右侧操作列单击 “更多 - 实例设置 – 设置IAM角色”,如下图所示。
2、在弹出的 设置IAM角色 对话框中操作类型点击“收回”,单击确认按钮,实例IAM角色收回成功。
通过API授予IAM角色
您可通过绑定角色给指定实例绑定IAM角色。
您可以通过解绑角色收回实例的IAM角色。
您可以通过获取实例角色列表查看账户下全部角色名称。