Skip to content

Commit

Permalink
⭐️ improve microsoft.tenant resource
Browse files Browse the repository at this point in the history
  • Loading branch information
chris-rock committed Aug 18, 2024
1 parent b772da8 commit 19e3909
Show file tree
Hide file tree
Showing 7 changed files with 408 additions and 140 deletions.
58 changes: 34 additions & 24 deletions providers/ms365/resources/microsoft.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@

package resources

import (
"context"

"github.com/microsoftgraph/msgraph-sdk-go/organization"
"go.mondoo.com/cnquery/v11/providers/ms365/connection"
)

type mqlMicrosoftInternal struct {
// index users by id
idxUsersById map[string]*mqlMicrosoftUser
// permission index key : appId/roleID value: permission name
idxPermissions map[string]string
// index of app names by appId
idxAppNames map[string]string
}

// initIndex ensures the user indexes are initialized,
Expand All @@ -39,25 +36,38 @@ func (a *mqlMicrosoft) userById(id string) (*mqlMicrosoftUser, bool) {
return res, ok
}

func (a *mqlMicrosoft) tenantDomainName() (string, error) {
conn := a.MqlRuntime.Connection.(*connection.Ms365Connection)
graphClient, err := conn.GraphClient()
if err != nil {
return "", err
func (a *mqlMicrosoft) initPermissionIndex() {
if a.idxPermissions == nil {
a.idxPermissions = make(map[string]string)
}
ctx := context.Background()
resp, err := graphClient.Organization().Get(ctx, &organization.OrganizationRequestBuilderGetRequestConfiguration{})
if err != nil {
return "", transformError(err)
}

func (a *mqlMicrosoft) indexPermission(appId, roleId, name string) {
a.initPermissionIndex()
a.idxPermissions[appId+"/"+roleId] = name
}

func (a *mqlMicrosoft) permission(appId, roleId string) string {
if a.idxPermissions == nil {
return ""
}
tenantDomainName := ""
for _, org := range resp.GetValue() {
for _, d := range org.GetVerifiedDomains() {
if *d.GetIsInitial() {
tenantDomainName = *d.GetName()
}
}
return a.idxPermissions[appId+"/"+roleId]
}

func (a *mqlMicrosoft) initAppNameIndex() {
if a.idxAppNames == nil {
a.idxAppNames = make(map[string]string)
}
}

return tenantDomainName, nil
func (a *mqlMicrosoft) indexAppName(appId, name string) {
a.initAppNameIndex()
a.idxAppNames[appId] = name
}

func (a *mqlMicrosoft) appName(appId string) string {
if a.idxAppNames == nil {
return ""
}
return a.idxAppNames[appId]
}
26 changes: 19 additions & 7 deletions providers/ms365/resources/ms365.lr
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
option provider = "go.mondoo.com/cnquery/v9/providers/ms365"
option go_package = "go.mondoo.com/cnquery/v11/providers/ms365/resources"

alias microsoft.organization = microsoft.tenant

// Microsoft
microsoft {
// List of organizations
organizations() []microsoft.organization
// Deprecated: use `microsoft.tenant` instead
organizations() []microsoft.tenant
// List of users
users() []microsoft.user
// List of groups
Expand All @@ -28,20 +30,30 @@ microsoft {
tenantDomainName() string
}

// Microsoft organization
private microsoft.organization @defaults("displayName") {
// Microsoft Entra tenant
private microsoft.tenant @defaults("name") {
// Organization ID
id string
// Organization assigned plans
// Service plans associated with the tenant
assignedPlans []dict
// Organization creation date
// Provisioned plan
provisionedPlans []dict
// Deprecated: use `createdAt` instead
createdDateTime time
// Organization display name
// Deprecated: use `name` instead
displayName string
// Tenant display name
name string
// Organization verified domains
verifiedDomains []dict
// Whether password hash sync is enabled for hybrid deployments
onPremisesSyncEnabled bool
// Tenant creation date
createdAt time
// Tenant type
type string
// Commercial subscription
subscriptions() []dict
}

// Microsoft Entra ID user
Expand Down
154 changes: 108 additions & 46 deletions providers/ms365/resources/ms365.lr.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 19e3909

Please sign in to comment.