github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/rules/cloud/policies/aws/kinesis/enable_in_transit_encryption.go (about) 1 package kinesis 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/internal/rules" 5 "github.com/khulnasoft-lab/defsec/pkg/providers" 6 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/kinesis" 7 "github.com/khulnasoft-lab/defsec/pkg/scan" 8 "github.com/khulnasoft-lab/defsec/pkg/severity" 9 "github.com/khulnasoft-lab/defsec/pkg/state" 10 ) 11 12 var CheckEnableInTransitEncryption = rules.Register( 13 scan.Rule{ 14 AVDID: "AVD-AWS-0064", 15 Provider: providers.AWSProvider, 16 Service: "kinesis", 17 ShortCode: "enable-in-transit-encryption", 18 Summary: "Kinesis stream is unencrypted.", 19 Impact: "Intercepted data can be read in transit", 20 Resolution: "Enable in transit encryption", 21 Explanation: `Kinesis streams should be encrypted to ensure sensitive data is kept private. Additionally, non-default KMS keys should be used so granularity of access control can be ensured.`, 22 Links: []string{ 23 "https://docs.aws.amazon.com/streams/latest/dev/server-side-encryption.html", 24 }, 25 Terraform: &scan.EngineMetadata{ 26 GoodExamples: terraformEnableInTransitEncryptionGoodExamples, 27 BadExamples: terraformEnableInTransitEncryptionBadExamples, 28 Links: terraformEnableInTransitEncryptionLinks, 29 RemediationMarkdown: terraformEnableInTransitEncryptionRemediationMarkdown, 30 }, 31 CloudFormation: &scan.EngineMetadata{ 32 GoodExamples: cloudFormationEnableInTransitEncryptionGoodExamples, 33 BadExamples: cloudFormationEnableInTransitEncryptionBadExamples, 34 Links: cloudFormationEnableInTransitEncryptionLinks, 35 RemediationMarkdown: cloudFormationEnableInTransitEncryptionRemediationMarkdown, 36 }, 37 Severity: severity.High, 38 }, 39 func(s *state.State) (results scan.Results) { 40 for _, stream := range s.AWS.Kinesis.Streams { 41 if stream.Encryption.Type.NotEqualTo(kinesis.EncryptionTypeKMS) { 42 results.Add( 43 "Stream does not use KMS encryption.", 44 stream.Encryption.Type, 45 ) 46 } else if stream.Encryption.KMSKeyID.IsEmpty() { 47 results.Add( 48 "Stream does not use a custom-managed KMS key.", 49 stream.Encryption.KMSKeyID, 50 ) 51 } else { 52 results.AddPassed(&stream) 53 } 54 } 55 return 56 }, 57 )