For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/security/code_security/iac_security/iac_rules/cloudformation-aws-emr-cluster-without-security-configuration.md.
A documentation index is available at /llms.txt.
EMR clusters must reference an EMR security configuration so cluster-level security settings (such as encryption and authentication controls) are applied. Without a security configuration, data at rest or in transit and access controls may not be enforced, increasing the risk of data exposure or unauthorized access.
In CloudFormation, the SecurityConfiguration property on AWS::EMR::Cluster must be defined and set to the logical name (string) of a resource of type AWS::EMR::SecurityConfiguration. Resources missing this property, or where the SecurityConfiguration value does not match an AWS::EMR::SecurityConfiguration resource in the same template, will be flagged.
AWSTemplateFormatVersion:2010-09-09Parameters:CrossRealmTrustPrincipalPassword:Type:StringKdcAdminPassword:Type:StringRealm:Type:StringInstanceType:Type:StringReleaseLabel:Type:StringSubnetId:Type:StringResources:cluster:Type:'AWS::EMR::Cluster'Properties:Instances:MasterInstanceGroup:InstanceCount:1InstanceType:!Ref InstanceTypeMarket:ON_DEMANDName:cfnMasterCoreInstanceGroup:InstanceCount:1InstanceType:!Ref InstanceTypeMarket:ON_DEMANDName:cfnCoreEc2SubnetId:!Ref SubnetIdName:CFNtest2JobFlowRole:!Ref emrEc2InstanceProfileKerberosAttributes:CrossRealmTrustPrincipalPassword:CfnIntegrationTest-1KdcAdminPassword:CfnIntegrationTest-1Realm:EC2.INTERNALServiceRole:!Ref emrRoleReleaseLabel:!Ref ReleaseLabelSecurityConfiguration:!Ref securityConfigurationVisibleToAllUsers:trueTags:- Key:key1Value:value1key:Type:'AWS::KMS::Key'Properties:KeyPolicy:Version:2012-10-17Id:key-default-1Statement:- Sid:Enable IAM User PermissionsEffect:AllowPrincipal:AWS:!GetAtt- emrEc2Role- ArnAction:'kms:*'Resource:'*'- Sid:Enable IAM User PermissionsEffect:AllowPrincipal:AWS:!Join- ''- - 'arn:aws:iam::'- !Ref 'AWS::AccountId'- ':root'Action:'kms:*'Resource:'*'securityConfiguration:Type:'AWS::EMR::SecurityConfiguration'Properties:SecurityConfiguration:AuthenticationConfiguration:KerberosConfiguration:Provider:ClusterDedicatedKdcClusterDedicatedKdcConfiguration:TicketLifetimeInHours:24CrossRealmTrustConfiguration:Realm:AD.DOMAIN.COMDomain:ad.domain.comAdminServer:ad.domain.comKdcServer:ad.domain.comemrRole:Type:'AWS::IAM::Role'Properties:AssumeRolePolicyDocument:Version:2008-10-17Statement:- Sid:''Effect:AllowPrincipal:Service:elasticmapreduce.amazonaws.comAction:'sts:AssumeRole'Path:/ManagedPolicyArns:- 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole'emrEc2Role:Type:'AWS::IAM::Role'Properties:AssumeRolePolicyDocument:Version:2008-10-17Statement:- Sid:''Effect:AllowPrincipal:Service:ec2.amazonaws.comAction:'sts:AssumeRole'Path:/ManagedPolicyArns:- 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role'emrEc2InstanceProfile:Type:'AWS::IAM::InstanceProfile'Properties:Path:/Roles:- !Ref emrEc2RoleOutputs:keyArn:Value:!GetAtt- key- Arn
{"AWSTemplateFormatVersion":"2010-09-09T00:00:00Z","Parameters":{"CrossRealmTrustPrincipalPassword":{"Type":"String"},"KdcAdminPassword":{"Type":"String"},"Realm":{"Type":"String"},"InstanceType":{"Type":"String"},"ReleaseLabel":{"Type":"String"},"SubnetId":{"Type":"String"}},"Resources":{"emrEc2Role":{"Type":"AWS::IAM::Role","Properties":{"AssumeRolePolicyDocument":{"Version":"2008-10-17T00:00:00Z","Statement":[{"Sid":"","Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]},"Path":"/","ManagedPolicyArns":["arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role"]}},"emrEc2InstanceProfile":{"Properties":{"Path":"/","Roles":["emrEc2Role"]},"Type":"AWS::IAM::InstanceProfile"},"cluster":{"Type":"AWS::EMR::Cluster","Properties":{"Name":"CFNtest2","JobFlowRole":"emrEc2InstanceProfile","ServiceRole":"emrRole","SecurityConfiguration":"securityConfiguration","Tags":[{"Key":"key1","Value":"value1"}],"Instances":{"MasterInstanceGroup":{"InstanceCount":1,"InstanceType":"InstanceType","Market":"ON_DEMAND","Name":"cfnMaster"},"CoreInstanceGroup":{"InstanceCount":1,"InstanceType":"InstanceType","Market":"ON_DEMAND","Name":"cfnCore"},"Ec2SubnetId":"SubnetId"},"KerberosAttributes":{"CrossRealmTrustPrincipalPassword":"CfnIntegrationTest-1","KdcAdminPassword":"CfnIntegrationTest-1","Realm":"EC2.INTERNAL"},"ReleaseLabel":"ReleaseLabel","VisibleToAllUsers":true}},"key":{"Type":"AWS::KMS::Key","Properties":{"KeyPolicy":{"Version":"2012-10-17T00:00:00Z","Id":"key-default-1","Statement":[{"Principal":{"AWS":["emrEc2Role","Arn"]},"Action":"kms:*","Resource":"*","Sid":"Enable IAM User Permissions","Effect":"Allow"},{"Action":"kms:*","Resource":"*","Sid":"Enable IAM User Permissions","Effect":"Allow","Principal":{"AWS":["",["arn:aws:iam::","AWS::AccountId",":root"]]}}]}}},"securityConfiguration":{"Type":"AWS::EMR::SecurityConfiguration","Properties":{"SecurityConfiguration":{"AuthenticationConfiguration":{"KerberosConfiguration":{"Provider":"ClusterDedicatedKdc","ClusterDedicatedKdcConfiguration":{"TicketLifetimeInHours":24,"CrossRealmTrustConfiguration":{"Realm":"AD.DOMAIN.COM","Domain":"ad.domain.com","AdminServer":"ad.domain.com","KdcServer":"ad.domain.com"}}}}}}},"emrRole":{"Type":"AWS::IAM::Role","Properties":{"Path":"/","ManagedPolicyArns":["arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole"],"AssumeRolePolicyDocument":{"Version":"2008-10-17T00:00:00Z","Statement":[{"Sid":"","Effect":"Allow","Principal":{"Service":"elasticmapreduce.amazonaws.com"},"Action":"sts:AssumeRole"}]}}}},"Outputs":{"keyArn":{"Value":["key","Arn"]}}}
AWSTemplateFormatVersion:2010-09-09Description:The cluster references its security configuration with a short-form Ref intrinsicResources:cluster:Type:'AWS::EMR::Cluster'Properties:Instances:Ec2SubnetId:subnet-12345678Name:CFNtestJobFlowRole:EMR_EC2_DefaultRoleServiceRole:EMR_DefaultRoleReleaseLabel:emr-5.0.0SecurityConfiguration:!Ref securityConfigurationVisibleToAllUsers:truesecurityConfiguration:Type:'AWS::EMR::SecurityConfiguration'Properties:SecurityConfiguration:AuthenticationConfiguration:KerberosConfiguration:Provider:ClusterDedicatedKdc
Non-Compliant Code Examples
AWSTemplateFormatVersion:2010-09-09Parameters:CrossRealmTrustPrincipalPassword:Type:StringKdcAdminPassword:Type:StringRealm:Type:StringInstanceType:Type:StringReleaseLabel:Type:StringSubnetId:Type:StringResources:cluster:Type:'AWS::EMR::Cluster'Properties:Instances:MasterInstanceGroup:InstanceCount:1InstanceType:!Ref InstanceTypeMarket:ON_DEMANDName:cfnMasterCoreInstanceGroup:InstanceCount:1InstanceType:!Ref InstanceTypeMarket:ON_DEMANDName:cfnCoreEc2SubnetId:!Ref SubnetIdName:CFNtest2JobFlowRole:!Ref emrEc2InstanceProfileKerberosAttributes:CrossRealmTrustPrincipalPassword:CfnIntegrationTest-1KdcAdminPassword:CfnIntegrationTest-1Realm:EC2.INTERNALServiceRole:!Ref emrRoleReleaseLabel:!Ref ReleaseLabelSecurityConfiguration:!Ref securityConfiguration1VisibleToAllUsers:trueTags:- Key:key1Value:value1key:Type:'AWS::KMS::Key'Properties:KeyPolicy:Version:2012-10-17Id:key-default-1Statement:- Sid:Enable IAM User PermissionsEffect:AllowPrincipal:AWS:!GetAtt- emrEc2Role- ArnAction:'kms:*'Resource:'*'- Sid:Enable IAM User PermissionsEffect:AllowPrincipal:AWS:!Join- ''- - 'arn:aws:iam::'- !Ref 'AWS::AccountId'- ':root'Action:'kms:*'Resource:'*'securityConfiguration:Type:'AWS::EMR::SecurityConfiguration'Properties:SecurityConfiguration:AuthenticationConfiguration:KerberosConfiguration:Provider:ClusterDedicatedKdcClusterDedicatedKdcConfiguration:TicketLifetimeInHours:24CrossRealmTrustConfiguration:Realm:AD.DOMAIN.COMDomain:ad.domain.comAdminServer:ad.domain.comKdcServer:ad.domain.comemrRole:Type:'AWS::IAM::Role'Properties:AssumeRolePolicyDocument:Version:2008-10-17Statement:- Sid:''Effect:AllowPrincipal:Service:elasticmapreduce.amazonaws.comAction:'sts:AssumeRole'Path:/ManagedPolicyArns:- 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole'emrEc2Role:Type:'AWS::IAM::Role'Properties:AssumeRolePolicyDocument:Version:2008-10-17Statement:- Sid:''Effect:AllowPrincipal:Service:ec2.amazonaws.comAction:'sts:AssumeRole'Path:/ManagedPolicyArns:- 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role'emrEc2InstanceProfile:Type:'AWS::IAM::InstanceProfile'Properties:Path:/Roles:- !Ref emrEc2RoleOutputs:keyArn:Value:!GetAtt- key- Arn
AWSTemplateFormatVersion:2010-09-09Parameters:CrossRealmTrustPrincipalPassword:Type:StringKdcAdminPassword:Type:StringRealm:Type:StringInstanceType:Type:StringReleaseLabel:Type:StringSubnetId:Type:StringResources:cluster1:Type:'AWS::EMR::Cluster'Properties:Instances:MasterInstanceGroup:InstanceCount:1InstanceType:!Ref InstanceTypeMarket:ON_DEMANDName:cfnMasterCoreInstanceGroup:InstanceCount:1InstanceType:!Ref InstanceTypeMarket:ON_DEMANDName:cfnCoreEc2SubnetId:!Ref SubnetIdName:CFNtest2JobFlowRole:!Ref emrEc2InstanceProfileKerberosAttributes:CrossRealmTrustPrincipalPassword:CfnIntegrationTest-1KdcAdminPassword:CfnIntegrationTest-1Realm:EC2.INTERNALServiceRole:!Ref emrRoleReleaseLabel:!Ref ReleaseLabelVisibleToAllUsers:trueTags:- Key:key1Value:value1key:Type:'AWS::KMS::Key'Properties:KeyPolicy:Version:2012-10-17Id:key-default-1Statement:- Sid:Enable IAM User PermissionsEffect:AllowPrincipal:AWS:!GetAtt- emrEc2Role- ArnAction:'kms:*'Resource:'*'- Sid:Enable IAM User PermissionsEffect:AllowPrincipal:AWS:!Join- ''- - 'arn:aws:iam::'- !Ref 'AWS::AccountId'- ':root'Action:'kms:*'Resource:'*'emrRole1:Type:'AWS::IAM::Role'Properties:AssumeRolePolicyDocument:Version:2008-10-17Statement:- Sid:''Effect:AllowPrincipal:Service:elasticmapreduce.amazonaws.comAction:'sts:AssumeRole'Path:/ManagedPolicyArns:- 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole'emrEc2Role1:Type:'AWS::IAM::Role'Properties:AssumeRolePolicyDocument:Version:2008-10-17Statement:- Sid:''Effect:AllowPrincipal:Service:ec2.amazonaws.comAction:'sts:AssumeRole'Path:/ManagedPolicyArns:- 'arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role'emrEc2InstanceProfile1:Type:'AWS::IAM::InstanceProfile'Properties:Path:/Roles:- !Ref emrEc2RoleOutputs:keyArn:Value:!GetAtt- key- Arn
{"Outputs":{"keyArn":{"Value":["key","Arn"]}},"AWSTemplateFormatVersion":"2010-09-09T00:00:00Z","Parameters":{"Realm":{"Type":"String"},"InstanceType":{"Type":"String"},"ReleaseLabel":{"Type":"String"},"SubnetId":{"Type":"String"},"CrossRealmTrustPrincipalPassword":{"Type":"String"},"KdcAdminPassword":{"Type":"String"}},"Resources":{"emrEc2InstanceProfile":{"Type":"AWS::IAM::InstanceProfile","Properties":{"Path":"/","Roles":["emrEc2Role"]}},"cluster":{"Type":"AWS::EMR::Cluster","Properties":{"ReleaseLabel":"ReleaseLabel","SecurityConfiguration":"securityConfiguration1","VisibleToAllUsers":true,"Tags":[{"Value":"value1","Key":"key1"}],"Instances":{"MasterInstanceGroup":{"Market":"ON_DEMAND","Name":"cfnMaster","InstanceCount":1,"InstanceType":"InstanceType"},"CoreInstanceGroup":{"InstanceCount":1,"InstanceType":"InstanceType","Market":"ON_DEMAND","Name":"cfnCore"},"Ec2SubnetId":"SubnetId"},"Name":"CFNtest2","JobFlowRole":"emrEc2InstanceProfile","KerberosAttributes":{"CrossRealmTrustPrincipalPassword":"CfnIntegrationTest-1","KdcAdminPassword":"CfnIntegrationTest-1","Realm":"EC2.INTERNAL"},"ServiceRole":"emrRole"}},"key":{"Type":"AWS::KMS::Key","Properties":{"KeyPolicy":{"Version":"2012-10-17T00:00:00Z","Id":"key-default-1","Statement":[{"Resource":"*","Sid":"Enable IAM User Permissions","Effect":"Allow","Principal":{"AWS":["emrEc2Role","Arn"]},"Action":"kms:*"},{"Effect":"Allow","Principal":{"AWS":["",["arn:aws:iam::","AWS::AccountId",":root"]]},"Action":"kms:*","Resource":"*","Sid":"Enable IAM User Permissions"}]}}},"securityConfiguration":{"Type":"AWS::EMR::SecurityConfiguration","Properties":{"SecurityConfiguration":{"AuthenticationConfiguration":{"KerberosConfiguration":{"ClusterDedicatedKdcConfiguration":{"TicketLifetimeInHours":24,"CrossRealmTrustConfiguration":{"Realm":"AD.DOMAIN.COM","Domain":"ad.domain.com","AdminServer":"ad.domain.com","KdcServer":"ad.domain.com"}},"Provider":"ClusterDedicatedKdc"}}}}},"emrRole":{"Type":"AWS::IAM::Role","Properties":{"AssumeRolePolicyDocument":{"Version":"2008-10-17T00:00:00Z","Statement":[{"Effect":"Allow","Principal":{"Service":"elasticmapreduce.amazonaws.com"},"Action":"sts:AssumeRole","Sid":""}]},"Path":"/","ManagedPolicyArns":["arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole"]}},"emrEc2Role":{"Type":"AWS::IAM::Role","Properties":{"AssumeRolePolicyDocument":{"Version":"2008-10-17T00:00:00Z","Statement":[{"Sid":"","Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]},"Path":"/","ManagedPolicyArns":["arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role"]}}}}
1
2
rulesets:- CloudFormation / AWS # Rules to enforce / AWS.
Request a personalized demo
Get Started with Datadog
Ask AI
AI-generated responses may be inaccurate. Verify important info.