Как составить список пользователей из всех Identity Domains в Oracle Cloud Infrastructure?
Мне нужно получить список всех пользователей, присутствующих в моей среде Oracle Cloud, через REST API или Go SDK.
Глядя на документы REST API , документы Go SDK и документы OCI CLI , нигде, похоже, не предоставляется возможность указать Identity Domain в качестве аргумента.
oci iam user list
возвращает только набор пользователей, присутствующих в домене «по умолчанию», даже если я аутентифицируюсь как пользователь в другом домене.
Есть ли способ получить пользователей из других доменов идентификации?
3 ответа
Вот документ REST API, в котором перечислены все пользователи в домене идентификации:
https://docs.oracle.com/en/cloud/paas/iam-domains-rest-api/op-admin-v1-users-get.html
Кроме того, пожалуйста, используйте URL-адрес домена для конечной точки API? Примерно так: https://{domainUrl}/admin/v1/Users).
К сожалению, у нас есть поддержка Go SDK (или других SDK и CLI) только для ресурсов IAM, но не для Identity Domains (IDCS).
Спасибо.
Существует oci-go-sdk с пакетом идентификационного домена, который можно использовать для составления списка пользователей, связанных с доменом, связанным с определенным отсеком.
https://github.com/oracle/oci-go-sdk/blob/master/identitydomains/list_users_request_response.go
Для этого требуется URL-адрес домена и ListUserRequest. Ниже приведен пример кода.
package oci
import (
"context"
"fmt"
"github.com/oracle/oci-go-sdk/example/helpers"
"github.com/oracle/oci-go-sdk/v65/common"
"github.com/oracle/oci-go-sdk/v65/identitydomains"
)
func InitializeConfigs1() common.ConfigurationProvider {
customerTenancyId := "**********************" // root compartment ocid
userOCID := "********************" // user coid
homeRegion := "us-ashburn-1". // region
fingerprint := "******************"
key := "-----BEGIN PRIVATE KEY-----
*******************************
----END PRIVATE KEY-----"
cp := common.NewRawConfigurationProvider(customerTenancyId, userOCID, homeRegion, fingerprint, key, nil)
return cp
}
func ListDomainUsers() {
cp := InitializeConfigs1()
ExampleListUsers_ListUsers_IdentityDomain(cp)
}
func ExampleListUsers_ListUsers_IdentityDomain(cp common.ConfigurationProvider) {
// build the url
//endpoint := "https://****************" // Domain url
client, err := identitydomains.NewIdentityDomainsClientWithConfigurationProvider(cp, endpoint)
helpers.FatalIfError(err)
// List domain users
req := identitydomains.ListUsersRequest{}
resp, err := client.ListUsers(context.Background(), req)
helpers.FatalIfError(err)
fmt.Println(resp)
// list domain groups
grpReq := identitydomains.ListGroupsRequest{}
resp1, err1 := client.ListGroups(context.Background(), grpReq)
helpers.FatalIfError(err1)
fmt.Println(resp1)
}
Вот документация bash для справки. https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.27.0/oci_cli_docs/cmdref/identity-domains/users/list.html
https://kaamilant.com/change-oracle-cloud-username/
вы можете использовать тот же API с действием get, и он вернет список всех пользователей из одного домена идентификации. если у вас несколько доменов идентификации, вы можете разработать сценарий в почтальоне для повторения одного за другим