Skip to content

Commit 00802ec

Browse files
add IMS client to RamUser collector for invoking IMS.GetLoginProfile (#95)
* add IMS client to RamUser collector for invoking IMS.GetLoginProfile * Update collector/alicloud/collector/ram/ram_user.go avoid potential nil pointer Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
1 parent e3e7ff7 commit 00802ec

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

collector/alicloud/collector/ram/ram_user.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package ram
1717

1818
import (
1919
"context"
20+
ims20190815 "github.com/alibabacloud-go/ims-20190815/v4/client"
2021
"github.com/aliyun/alibaba-cloud-sdk-go/services/ram"
2122
"github.com/cloudrec/alicloud/collector"
2223
"github.com/core-sdk/constant"
@@ -43,7 +44,7 @@ func GetRAMUserResource() schema.Resource {
4344
type UserDetail struct {
4445
User ram.User
4546
UserDetail ram.User
46-
LoginProfile ram.LoginProfile
47+
LoginProfile *ims20190815.GetLoginProfileResponseBodyLoginProfile
4748
Groups []ram.Group
4849
ConsoleLogin bool
4950
Policies []PolicyDetail
@@ -64,6 +65,7 @@ type AccessKeyDetail struct {
6465

6566
func GetUserDetail(ctx context.Context, service schema.ServiceInterface, res chan<- any) error {
6667
cli := service.(*collector.Services).RAM
68+
imsCli := service.(*collector.Services).IMS
6769

6870
request := ram.CreateListUsersRequest()
6971
request.Scheme = "https"
@@ -80,13 +82,14 @@ func GetUserDetail(ctx context.Context, service schema.ServiceInterface, res cha
8082
User: i,
8183
UserDetail: getUser(ctx, cli, i.UserName),
8284
//Groups: groups,
83-
LoginProfile: getLoginProfile(ctx, cli, i.UserName),
85+
LoginProfile: getLoginProfile(ctx, imsCli, i.UserName),
8486
Policies: listAttachedPolicies(ctx, cli, i.UserName, []ram.Group{}),
8587
AccessKeys: accessKeys,
8688
ExistActiveAccessKey: existActiveAccessKey(accessKeys),
8789
}
8890

89-
d.ConsoleLogin = d.LoginProfile.CreateDate != ""
91+
d.ConsoleLogin = d.LoginProfile != nil && d.LoginProfile.Status != nil && *d.LoginProfile.Status == "Active"
92+
9093
res <- d
9194
}
9295
if !response.IsTruncated {
@@ -142,16 +145,17 @@ func getUser(ctx context.Context, cli *ram.Client, username string) (user ram.Us
142145
return response.User
143146
}
144147

145-
func getLoginProfile(ctx context.Context, cli *ram.Client, username string) (LoginProfile ram.LoginProfile) {
146-
request := ram.CreateGetLoginProfileRequest()
147-
request.Scheme = "https"
148-
request.UserName = username
148+
func getLoginProfile(ctx context.Context, cli *ims20190815.Client, username string) (LoginProfile *ims20190815.GetLoginProfileResponseBodyLoginProfile) {
149+
request := &ims20190815.GetLoginProfileRequest{
150+
UserPrincipalName: &username,
151+
}
152+
149153
response, err := cli.GetLoginProfile(request)
150154
if err != nil {
151155
log.CtxLogger(ctx).Warn("GetLoginProfile error", zap.Error(err))
152156
return
153157
}
154-
return response.LoginProfile
158+
return response.Body.LoginProfile
155159
}
156160

157161
// query ram user policies

collector/alicloud/collector/services.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,10 @@ func (s *Services) InitServices(cloudAccountParam schema.CloudAccountParam) (err
281281
if err != nil {
282282
log.CtxLogger(ctx).Warn("init ram client failed", zap.Error(err))
283283
}
284+
s.IMS, err = createImsClient(param.Region, s.Config)
285+
if err != nil {
286+
log.CtxLogger(ctx).Warn("init ims client failed", zap.Error(err))
287+
}
284288
s.RAM.SetHttpProxy(cloudAccountParam.ProxyConfig)
285289
s.RAM.SetHttpsProxy(cloudAccountParam.ProxyConfig)
286290
case Account:

0 commit comments

Comments
 (0)