Skip to content
This repository has been archived by the owner on Jan 23, 2025. It is now read-only.

add: multiple adapters added(kendra, kinesis, kinesisvideo, proton, q… #1227

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,17 @@ require (
)

require (
github.com/aws/aws-sdk-go-v2/service/kendra v1.38.5
github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.15.5
github.com/aws/aws-sdk-go-v2/service/proton v1.20.3
github.com/aws/aws-sdk-go-v2/service/ses v1.15.3
github.com/aws/aws-sdk-go-v2/service/shield v1.18.4
github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.16.0
github.com/aws/aws-sdk-go-v2/service/transfer v1.28.5
github.com/aws/aws-sdk-go-v2/service/translate v1.17.4
github.com/aws/aws-sdk-go-v2/service/waf v1.12.4
github.com/aws/aws-sdk-go-v2/service/wafv2 v1.26.0
github.com/aws/aws-sdk-go-v2/service/xray v1.16.5
github.com/aws/smithy-go v1.13.5
github.com/mitchellh/mapstructure v1.5.0
k8s.io/utils v0.0.0-20230115233650-391b47cb4029
Expand Down Expand Up @@ -109,7 +120,7 @@ require (
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.10 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.19 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.23 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.24 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.12.4 // indirect
Expand Down
25 changes: 24 additions & 1 deletion go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -333,8 +333,9 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.10 h1:dpiPHgm
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.10/go.mod h1:9cBNUHI2aW4ho0A5T87O294iPDuuUOSIEDjnd1Lq/z0=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 h1:BBYoNQt2kUZUUK4bIPsKrCcjVPUMNsgQpNAwhznK/zo=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18/go.mod h1:NS55eQ4YixUJPTC+INxi2/jCqe1y2Uw3rnh9wEOVJxY=
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.19 h1:V03dAtcAN4Qtly7H3/0B6m3t/cyl4FgyKFqK738fyJw=
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.19/go.mod h1:2WpVWFC5n4DYhjNXzObtge8xfgId9UP6GWca46KJFLo=
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.23 h1:5AwQnYQT3ZX/N7hPTAx4ClWyucaiqr2esQRMNbJIby0=
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.23/go.mod h1:s8OUYECPoPpevQHmRmMBemFIx6Oc91iapsw56KiXIMY=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.23/go.mod h1:9uPh+Hrz2Vn6oMnQYiUi/zbh3ovbnQk19YKINkQny44=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.24 h1:c5qGfdbCHav6viBwiyDns3OXqhqAbGjfIB4uVu2ayhk=
Expand All @@ -343,8 +344,12 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 h1:HfVVR1vItaG6l
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI=
github.com/aws/aws-sdk-go-v2/service/kafka v1.19.4 h1:EmEk3gRJzSEK8DUnkvTGDn/RQc/Ud+yimUFIG+PSvTI=
github.com/aws/aws-sdk-go-v2/service/kafka v1.19.4/go.mod h1:+O9qi0UC83Lk0KAnC/ixNcw4piXfUtPzXpYn/KC2Mhg=
github.com/aws/aws-sdk-go-v2/service/kendra v1.38.5 h1:vYyn1h1+/eRL8UxfzRgxhH8tm+Jd6ujsyXmUFztfnks=
github.com/aws/aws-sdk-go-v2/service/kendra v1.38.5/go.mod h1:PMq9hXXhaNxmBMIolmknhJ9gXi4PYDsZwsFBaJs7Zak=
github.com/aws/aws-sdk-go-v2/service/kinesis v1.15.19 h1:qVaBkJxFxm6o/9DPNnJU6L9O3V7ycEKhCvRm2BFBQTU=
github.com/aws/aws-sdk-go-v2/service/kinesis v1.15.19/go.mod h1:9rLNg+J9SEe7rhge/YzKU3QTovlLqOmqH8akb0IB1ko=
github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.15.5 h1:lVFA8fZBznkErYFE42WM2KyoQ+yRpyA7bLfWOrhGSH4=
github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.15.5/go.mod h1:JRp3eVmI2W1qreH9VQ+Kh2xtrKG+25ASrt4/lgl+s5g=
github.com/aws/aws-sdk-go-v2/service/kms v1.20.8 h1:R5f4VOFi3ScTe7TtePyxLqEhNqTJIAxL57MzrXFNs6I=
github.com/aws/aws-sdk-go-v2/service/kms v1.20.8/go.mod h1:OtP3pBOgmJM+acQyQcQXtQHets3yJoVuanCx2T5M7v4=
github.com/aws/aws-sdk-go-v2/service/lambda v1.24.6 h1:N7RkXX2SJbN+TCp295J3LdMR0KRFd2Bhi5nIO+svLQY=
Expand All @@ -353,6 +358,8 @@ github.com/aws/aws-sdk-go-v2/service/mq v1.13.15 h1:K0UbxNfaPHoIXo0T4L4jrbE+TKcV
github.com/aws/aws-sdk-go-v2/service/mq v1.13.15/go.mod h1:ycghPMXYItx5Y74iehFgGwDNUMXdq0xCxLaYC5uYZO0=
github.com/aws/aws-sdk-go-v2/service/neptune v1.17.12 h1:QxMwblYXBaAUnQsSbGGmGlqj5/lHJKaEr1HcMXnnaok=
github.com/aws/aws-sdk-go-v2/service/neptune v1.17.12/go.mod h1:0arQRjGdCQgRNLiCIv5FEFCgQkDMUiLkv0mkrUbSrNE=
github.com/aws/aws-sdk-go-v2/service/proton v1.20.3 h1:jcJeALhHrPufi1p3yJV0UhRcLFzIjwkl+5UaN3gbmI8=
github.com/aws/aws-sdk-go-v2/service/proton v1.20.3/go.mod h1:o7oSUtJ+VE7glg1jyTwLLw0AjBdEW49/heU6QkwbOVI=
github.com/aws/aws-sdk-go-v2/service/rds v1.26.1 h1:tiXsw36GaRUWMcH5uRM2uM7vo+bNsa1mEOn68ZOBjWA=
github.com/aws/aws-sdk-go-v2/service/rds v1.26.1/go.mod h1:d8jJiNpy2cyl52sw5msQQ12ajEbPAK+twYPR7J35slw=
github.com/aws/aws-sdk-go-v2/service/redshift v1.27.7 h1:fKg773iDMTGUxd8UNkEfwYGNjT6H6KFSmqV97Yte+jc=
Expand All @@ -361,6 +368,10 @@ github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 h1:3/gm/JTX9bX8CpzTgIlrtYpB3EVB
github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo=
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.2 h1:3x1Qilin49XQ1rK6pDNAfG+DmCFPfB7Rrpl+FUDAR/0=
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.16.2/go.mod h1:HEBBc70BYi5eUvxBqC3xXjU/04NO96X/XNUe5qhC7Bc=
github.com/aws/aws-sdk-go-v2/service/ses v1.15.3 h1:O7gl6f1Zi80GLQkyWFJi2PYzF8c7qd/iUBmLIVVp8og=
github.com/aws/aws-sdk-go-v2/service/ses v1.15.3/go.mod h1:xIWGz5r8k9h6T0f0jhkFdLMZJ10abjOfxmUWoWevw14=
github.com/aws/aws-sdk-go-v2/service/shield v1.18.4 h1:wG6qU1g1j7/PqpwsVINDEDesWXEIFlT3Jo3Icnanbu4=
github.com/aws/aws-sdk-go-v2/service/shield v1.18.4/go.mod h1:ffYls8/rWoTDASJkCpPZ8sB45G+pedR0UCQeD1v79qs=
github.com/aws/aws-sdk-go-v2/service/sns v1.18.1 h1:nxfBH9r3VUyybIOWdbIBJ/d5I1wdG7FwIoZ/BH/EhS8=
github.com/aws/aws-sdk-go-v2/service/sns v1.18.1/go.mod h1:sIIc12m8ASRbCgOERccSSkTFeekFfHKEM4TKAvzJpG0=
github.com/aws/aws-sdk-go-v2/service/sqs v1.20.6 h1:4P/vyx7zCI5yBhlDZ2kwhoLjMJi0X7iR3cxqjNfbego=
Expand All @@ -371,8 +382,20 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.4 h1:YRkWXQveFb0tFC0TLktmmhGs
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.4/go.mod h1:zVwRrfdSmbRZWkUkWjOItY7SOalnFnq/Yg2LVPqDjwc=
github.com/aws/aws-sdk-go-v2/service/sts v1.18.5 h1:L1600eLr0YvTT7gNh3Ni24yGI7NSHkq9Gp62vijPRCs=
github.com/aws/aws-sdk-go-v2/service/sts v1.18.5/go.mod h1:1mKZHLLpDMHTNSYPJ7qrcnCQdHCWsNQaT0xRvq2u80s=
github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.16.0 h1:HHVOprdnZxhM6F5JgljW8nCklfwUyOlbd/wuca6vORA=
github.com/aws/aws-sdk-go-v2/service/timestreamwrite v1.16.0/go.mod h1:d/oxd3ap2hu2jFVz59gwWVK/tKo7cwTFaBQE0+r/M3A=
github.com/aws/aws-sdk-go-v2/service/transfer v1.28.5 h1:/dqvTQdJ9ft48LKYMs2FOEMnFqh6PalEzHIxvkFkK9s=
github.com/aws/aws-sdk-go-v2/service/transfer v1.28.5/go.mod h1:r7g6A0BKTUDCXporXgMuAZTyA/ePlc+ecwgeErbXng4=
github.com/aws/aws-sdk-go-v2/service/translate v1.17.4 h1:YDe25vYZ8vSXtZa+pMYXityWNKk+w7qxq6eZdg6G1tk=
github.com/aws/aws-sdk-go-v2/service/translate v1.17.4/go.mod h1:qdbVoT21RIfEPekui7RbxHvT9azUHBxC7gwXzL5aNxE=
github.com/aws/aws-sdk-go-v2/service/waf v1.12.4 h1:/XibOwP4sHBEwwssi+EpN+EvlQpQbgN+koP65R3Vg6o=
github.com/aws/aws-sdk-go-v2/service/waf v1.12.4/go.mod h1:6eWFoHKs0mvgVDsxp2iezqLZW2sbVC+JefCt3i2G4jI=
github.com/aws/aws-sdk-go-v2/service/wafv2 v1.26.0 h1:s54dXRjvjHaEH6U2tg3VLbPX/72iMPdav3nrpMuZDkw=
github.com/aws/aws-sdk-go-v2/service/wafv2 v1.26.0/go.mod h1:vSTUUghvH8zg+S2i712OAw3M1lXZ5ijNTxC+9MNsO68=
github.com/aws/aws-sdk-go-v2/service/workspaces v1.23.0 h1:lrgZ9pZm9utPOPAXmQhqtf8oWRRksoSFxOE8RoD+pHc=
github.com/aws/aws-sdk-go-v2/service/workspaces v1.23.0/go.mod h1:vPam8+zGthTXeaFWgl3Uqbzo/0QEoXF22jpuMZ97hSk=
github.com/aws/aws-sdk-go-v2/service/xray v1.16.5 h1:yV19Annb9MQXxvvKaGvcFh8ZQAxR3lfi0ydH/dZsQHQ=
github.com/aws/aws-sdk-go-v2/service/xray v1.16.5/go.mod h1:cQhPXZj4AQrHy6DJ+ts+BmNTzhPVfFHHTZ9hh0DKASU=
github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
github.com/aws/smithy-go v1.13.4/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8=
Expand Down
90 changes: 90 additions & 0 deletions internal/adapters/cloud/aws/kendra/adapt.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package kendra

import (
"github.com/aquasecurity/defsec/internal/adapters/cloud/aws"
"github.com/aquasecurity/defsec/pkg/concurrency"
"github.com/aquasecurity/defsec/pkg/providers/aws/kendra"
"github.com/aquasecurity/defsec/pkg/state"
defsecTypes "github.com/aquasecurity/defsec/pkg/types"
api "github.com/aws/aws-sdk-go-v2/service/kendra"
aatypes "github.com/aws/aws-sdk-go-v2/service/kendra/types"
)

type adapter struct {
*aws.RootAdapter
api *api.Client
}

func init() {
aws.RegisterServiceAdapter(&adapter{})
}

func (a *adapter) Provider() string {
return "aws"
}

func (a *adapter) Name() string {
return "kendra"
}

func (a *adapter) Adapt(root *aws.RootAdapter, state *state.State) error {

a.RootAdapter = root
a.api = api.NewFromConfig(root.SessionConfig())
var err error

state.AWS.Kendra.ListIndices, err = a.getListIndex()
if err != nil {
return err
}

return nil
}

func (a *adapter) getListIndex() ([]kendra.ListIndices, error) {

a.Tracker().SetServiceLabel("Discovering ListIndices...")

var apiListIndex []aatypes.IndexConfigurationSummary
var input api.ListIndicesInput
for {
output, err := a.api.ListIndices(a.Context(), &input)
if err != nil {
return nil, err
}
apiListIndex = append(apiListIndex, output.IndexConfigurationSummaryItems...)
a.Tracker().SetTotalResources(len(apiListIndex))
if output.IndexConfigurationSummaryItems == nil {
break
}
input.NextToken = output.NextToken
}

a.Tracker().SetServiceLabel("Adapting List Indices...")
return concurrency.Adapt(apiListIndex, a.RootAdapter, a.adaptListIndex), nil
}

func (a *adapter) adaptListIndex(index aatypes.IndexConfigurationSummary) (*kendra.ListIndices, error) {

metadata := a.CreateMetadata(*index.Name)

getkey, err := a.api.DescribeIndex(a.Context(), &api.DescribeIndexInput{
Id: index.Id,
})
if err != nil {
return nil, err
}

var key string
if getkey.ServerSideEncryptionConfiguration.KmsKeyId != nil {
key = *getkey.ServerSideEncryptionConfiguration.KmsKeyId
}

return &kendra.ListIndices{
Metadata: metadata,
KmsKey: kendra.KmsKey{
Metadata: metadata,
KmsKeyId: defsecTypes.String(key, metadata),
},
}, nil
}
80 changes: 80 additions & 0 deletions internal/adapters/cloud/aws/kinesisvideo/adapt.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package kinesisvideo

import (
"github.com/aquasecurity/defsec/internal/adapters/cloud/aws"
"github.com/aquasecurity/defsec/pkg/concurrency"
"github.com/aquasecurity/defsec/pkg/providers/aws/kinesisvideo"
"github.com/aquasecurity/defsec/pkg/state"
defsecTypes "github.com/aquasecurity/defsec/pkg/types"
api "github.com/aws/aws-sdk-go-v2/service/kinesisvideo"
aatypes "github.com/aws/aws-sdk-go-v2/service/kinesisvideo/types"
)

type adapter struct {
*aws.RootAdapter
api *api.Client
}

func init() {
aws.RegisterServiceAdapter(&adapter{})
}

func (a *adapter) Provider() string {
return "aws"
}

func (a *adapter) Name() string {
return "kinesisvideo"
}

func (a *adapter) Adapt(root *aws.RootAdapter, state *state.State) error {

a.RootAdapter = root
a.api = api.NewFromConfig(root.SessionConfig())
var err error

state.AWS.Kinesisvideo.StreamInfoList, err = a.getStreamInfo()
if err != nil {
return err
}

return nil
}

func (a *adapter) getStreamInfo() ([]kinesisvideo.StreamInfo, error) {

a.Tracker().SetServiceLabel("Discovering Stream Info...")

var apiStreamInfo []aatypes.StreamInfo
var input api.ListStreamsInput
for {
output, err := a.api.ListStreams(a.Context(), &input)
if err != nil {
return nil, err
}
apiStreamInfo = append(apiStreamInfo, output.StreamInfoList...)
a.Tracker().SetTotalResources(len(apiStreamInfo))
if output.StreamInfoList == nil {
break
}
input.NextToken = output.NextToken
}

a.Tracker().SetServiceLabel("Adapting Stream Info...")
return concurrency.Adapt(apiStreamInfo, a.RootAdapter, a.adaptStreamInfo), nil
}

func (a *adapter) adaptStreamInfo(apiStreamInfo aatypes.StreamInfo) (*kinesisvideo.StreamInfo, error) {

metadata := a.CreateMetadataFromARN(*apiStreamInfo.StreamARN)

var key string
if apiStreamInfo.KmsKeyId != nil {
key = *apiStreamInfo.KmsKeyId
}

return &kinesisvideo.StreamInfo{
Metadata: metadata,
KmsKeyId: defsecTypes.String(key, metadata),
}, nil
}
87 changes: 87 additions & 0 deletions internal/adapters/cloud/aws/proton/adapt.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package proton

import (
"github.com/aquasecurity/defsec/internal/adapters/cloud/aws"
"github.com/aquasecurity/defsec/pkg/concurrency"
"github.com/aquasecurity/defsec/pkg/providers/aws/proton"
"github.com/aquasecurity/defsec/pkg/state"
defsecTypes "github.com/aquasecurity/defsec/pkg/types"
api "github.com/aws/aws-sdk-go-v2/service/proton"
aatypes "github.com/aws/aws-sdk-go-v2/service/proton/types"
)

type adapter struct {
*aws.RootAdapter
api *api.Client
}

func init() {
aws.RegisterServiceAdapter(&adapter{})
}

func (a *adapter) Provider() string {
return "aws"
}

func (a *adapter) Name() string {
return "proton"
}

func (a *adapter) Adapt(root *aws.RootAdapter, state *state.State) error {

a.RootAdapter = root
a.api = api.NewFromConfig(root.SessionConfig())
var err error

state.AWS.Proton.ListEnvironmentTemplates, err = a.getEnvironmentTemplate()
if err != nil {
return err
}

return nil
}

func (a *adapter) getEnvironmentTemplate() ([]proton.EnvironmentTemplate, error) {

a.Tracker().SetServiceLabel("Discovering Environment Template ...")

var apiEnvironmentTemplate []aatypes.EnvironmentTemplateSummary
var input api.ListEnvironmentTemplatesInput
for {
output, err := a.api.ListEnvironmentTemplates(a.Context(), &input)
if err != nil {
return nil, err
}
apiEnvironmentTemplate = append(apiEnvironmentTemplate, output.Templates...)
a.Tracker().SetTotalResources(len(apiEnvironmentTemplate))
if output.Templates == nil {
break
}
input.NextToken = output.NextToken
}

a.Tracker().SetServiceLabel("Adapting Stream Info...")
return concurrency.Adapt(apiEnvironmentTemplate, a.RootAdapter, a.adaptEnvironmentTemplate), nil
}

func (a *adapter) adaptEnvironmentTemplate(apiEnvironmentTemplate aatypes.EnvironmentTemplateSummary) (*proton.EnvironmentTemplate, error) {

metadata := a.CreateMetadataFromARN(*apiEnvironmentTemplate.Arn)

getEncrytpitonKey, err := a.api.GetEnvironmentTemplate(a.Context(), &api.GetEnvironmentTemplateInput{
Name: apiEnvironmentTemplate.Name,
})
if err != nil {
return nil, err
}

var encryptionkey string
if getEncrytpitonKey.EnvironmentTemplate.EncryptionKey != nil {
encryptionkey = *getEncrytpitonKey.EnvironmentTemplate.EncryptionKey
}

return &proton.EnvironmentTemplate{
Metadata: metadata,
EncryptionKey: defsecTypes.String(encryptionkey, metadata),
}, nil
}
Loading