diff --git a/apps/cnquery/cmd/root.go b/apps/cnquery/cmd/root.go index 455808d138..c1785909b7 100644 --- a/apps/cnquery/cmd/root.go +++ b/apps/cnquery/cmd/root.go @@ -226,6 +226,11 @@ func getCobraScanConfig(cmd *cobra.Command, runtime *providers.Runtime, cliRes * cliRes.Asset.Name = assetName } + platformID := viper.GetString("platform-id") + if platformID != "" && cliRes.Asset != nil { + cliRes.Asset.PlatformIds = append(cliRes.Asset.PlatformIds, platformID) + } + traceId := viper.GetString("trace-id") if traceId != "" && cliRes.Asset != nil { cliRes.Asset.TraceId = traceId diff --git a/providers/os/connection/docker/container_connection.go b/providers/os/connection/docker/container_connection.go index a59dca9fb6..d7120c0098 100644 --- a/providers/os/connection/docker/container_connection.go +++ b/providers/os/connection/docker/container_connection.go @@ -203,7 +203,7 @@ func NewDockerEngineContainer(id uint32, conf *inventory.Config, asset *inventor conn.Metadata.Name = containerid.ShortContainerImageID(ci.ID) conn.Metadata.Labels = ci.Labels asset.Name = ci.Name - asset.PlatformIds = []string{containerid.MondooContainerID(ci.ID)} + asset.PlatformIds = append(asset.PlatformIds, containerid.MondooContainerID(ci.ID)) return conn, nil } else { log.Debug().Msg("found stopped container " + ci.ID) @@ -223,7 +223,7 @@ func NewDockerEngineContainer(id uint32, conf *inventory.Config, asset *inventor } // ^^ asset.Name = ci.Name - asset.PlatformIds = []string{containerid.MondooContainerID(ci.ID)} + asset.PlatformIds = append(asset.PlatformIds, containerid.MondooContainerID(ci.ID)) return conn, nil } } @@ -260,7 +260,7 @@ func NewContainerImageConnection(id uint32, conf *inventory.Config, asset *inven // The requested image isn't locally available, but we can pull it from a remote registry. if len(resolvedAssets) > 0 && resolvedAssets[0].Connections[0].Type == shared.Type_RegistryImage.String() { asset.Name = resolvedAssets[0].Name - asset.PlatformIds = resolvedAssets[0].PlatformIds + asset.PlatformIds = append(asset.PlatformIds, resolvedAssets[0].PlatformIds...) asset.Labels = resolvedAssets[0].Labels return container.NewRegistryImage(id, conf, asset) } @@ -294,7 +294,7 @@ func NewContainerImageConnection(id uint32, conf *inventory.Config, asset *inven identifier := containerid.MondooContainerImageID(labelImageId) - asset.PlatformIds = []string{identifier} + asset.PlatformIds = append(asset.PlatformIds, identifier) asset.Name = ii.Name asset.Labels = ii.Labels diff --git a/providers/os/provider/provider.go b/providers/os/provider/provider.go index 628f3f409c..8f603f0fd3 100644 --- a/providers/os/provider/provider.go +++ b/providers/os/provider/provider.go @@ -357,6 +357,7 @@ func (s *Service) connect(req *plugin.ConnectReq, callback plugin.ProviderCallba asset := req.Asset conf := asset.Connections[0] + log.Debug().Str("asset-name", asset.Name).Strs("platform-ids", asset.PlatformIds).Msg("pre-detection platform-ids") runtime, err := s.AddRuntime(conf, func(connId uint32) (*plugin.Runtime, error) { var conn shared.Connection @@ -371,7 +372,7 @@ func (s *Service) connect(req *plugin.ConnectReq, callback plugin.ProviderCallba if asset.Name == "" { asset.Name = fingerprint.Name } - asset.PlatformIds = fingerprint.PlatformIDs + asset.PlatformIds = append(asset.PlatformIds, fingerprint.PlatformIDs...) asset.IdDetector = fingerprint.ActiveIdDetectors asset.Platform = p appendRelatedAssetsFromFingerprint(fingerprint, asset) @@ -389,7 +390,7 @@ func (s *Service) connect(req *plugin.ConnectReq, callback plugin.ProviderCallba if asset.Name == "" && conn.Asset().Connections[0].Runtime != "vagrant" { asset.Name = fingerprint.Name } - asset.PlatformIds = fingerprint.PlatformIDs + asset.PlatformIds = append(asset.PlatformIds, fingerprint.PlatformIDs...) asset.IdDetector = fingerprint.ActiveIdDetectors asset.Platform = p appendRelatedAssetsFromFingerprint(fingerprint, asset) @@ -404,7 +405,7 @@ func (s *Service) connect(req *plugin.ConnectReq, callback plugin.ProviderCallba fingerprint, p, err := id.IdentifyPlatform(conn, req, asset.Platform, asset.IdDetector) if err == nil { asset.Name = fingerprint.Name - asset.PlatformIds = fingerprint.PlatformIDs + asset.PlatformIds = append(asset.PlatformIds, fingerprint.PlatformIDs...) asset.IdDetector = fingerprint.ActiveIdDetectors asset.Platform = p appendRelatedAssetsFromFingerprint(fingerprint, asset) @@ -419,7 +420,7 @@ func (s *Service) connect(req *plugin.ConnectReq, callback plugin.ProviderCallba fingerprint, p, err := id.IdentifyPlatform(conn, req, asset.Platform, asset.IdDetector) if err == nil { asset.Name = fingerprint.Name - asset.PlatformIds = fingerprint.PlatformIDs + asset.PlatformIds = append(asset.PlatformIds, fingerprint.PlatformIDs...) asset.IdDetector = fingerprint.ActiveIdDetectors asset.Platform = p appendRelatedAssetsFromFingerprint(fingerprint, asset) @@ -434,7 +435,7 @@ func (s *Service) connect(req *plugin.ConnectReq, callback plugin.ProviderCallba fingerprint, p, err := id.IdentifyPlatform(conn, req, asset.Platform, asset.IdDetector) if err == nil { asset.Name = fingerprint.Name - asset.PlatformIds = fingerprint.PlatformIDs + asset.PlatformIds = append(asset.PlatformIds, fingerprint.PlatformIDs...) asset.IdDetector = fingerprint.ActiveIdDetectors asset.Platform = p appendRelatedAssetsFromFingerprint(fingerprint, asset) @@ -486,7 +487,7 @@ func (s *Service) connect(req *plugin.ConnectReq, callback plugin.ProviderCallba fingerprint, p, err := id.IdentifyPlatform(conn, req, asset.Platform, asset.IdDetector) if err == nil { asset.Name = fingerprint.Name - asset.PlatformIds = fingerprint.PlatformIDs + asset.PlatformIds = append(asset.PlatformIds, fingerprint.PlatformIDs...) asset.IdDetector = fingerprint.ActiveIdDetectors asset.Platform = p } @@ -507,6 +508,7 @@ func (s *Service) connect(req *plugin.ConnectReq, callback plugin.ProviderCallba return nil, err } + log.Debug().Str("asset-name", asset.Name).Strs("platform-ids", asset.PlatformIds).Msg("used platform-ids") var upstream *upstream.UpstreamClient if req.Upstream != nil && !req.Upstream.Incognito { upstream, err = req.Upstream.InitClient(context.Background())