<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Diego Trujillo</title>
    <description>The latest articles on Forem by Diego Trujillo (@diegop0s).</description>
    <link>https://forem.com/diegop0s</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1525026%2Ffa2684c8-ee1e-4032-b48f-63da4f9e36a9.jpg</url>
      <title>Forem: Diego Trujillo</title>
      <link>https://forem.com/diegop0s</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/diegop0s"/>
    <language>en</language>
    <item>
      <title>Managing your GoDaddy domain with Route53</title>
      <dc:creator>Diego Trujillo</dc:creator>
      <pubDate>Thu, 06 Jun 2024 21:13:42 +0000</pubDate>
      <link>https://forem.com/diegop0s/managing-your-godaddy-domain-with-route53-5f2p</link>
      <guid>https://forem.com/diegop0s/managing-your-godaddy-domain-with-route53-5f2p</guid>
      <description>&lt;p&gt;This post explains how to use AWS Route53 to manage your external domain, such as GoDaddy. Simply follow these steps:&lt;/p&gt;

&lt;h2&gt;
  
  
  Select your domain in GoDaddy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yk6yz7u1b12va230tym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yk6yz7u1b12va230tym.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify the domain you own. The domain name is important, for example: &lt;strong&gt;my-daddy-o.org&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create your Hosted Zone in Route53
&lt;/h2&gt;

&lt;p&gt;Log in to the AWS Console and navigate to the Route53 service console. Then, go to the "Hosted Zone" section and click on "Create hosted zone".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frr6qm7pep41tl7qgraa4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frr6qm7pep41tl7qgraa4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type your Domain name here (my-daddy-o.org) and select "Public" type.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0p192dwgx7ozt7rd8sb5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0p192dwgx7ozt7rd8sb5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After setting up your Hosted Zone, review the records and double-check the default NS and SOA records, especially the "NS" type record.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnb1mwy64jqzetane9jt0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnb1mwy64jqzetane9jt0.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fga121426qwesvfodth4z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fga121426qwesvfodth4z.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Update your Nameservers on GoDaddy
&lt;/h2&gt;

&lt;p&gt;Go to your GoDaddy domain, navigate to the "DNS" section, update the "Nameservers," and then click "Change".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6zvxoql4m74ghqix1wfi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6zvxoql4m74ghqix1wfi.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the new window, enter the values from your "NS" record in Route53. Be careful to not include the last dot. For example: &lt;code&gt;ns-777.awsdns-11.com.&lt;/code&gt; → &lt;code&gt;ns-777.awsdns-11.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fja7svms43d11wendbyay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fja7svms43d11wendbyay.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify your domain
&lt;/h2&gt;

&lt;p&gt;You can verify the complete application of your Name Server change by checking its propagation. This may take some time (minutes to hours). Use &lt;a href="https://www.whatsmydns.net/#NS" rel="noopener noreferrer"&gt;whatsmydns&lt;/a&gt; to check for correct propagation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5qawt92timw0am254xzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5qawt92timw0am254xzd.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Validate a record
&lt;/h2&gt;

&lt;p&gt;As an additional step, you need to create a new record on Route53 to validate its functionality.&lt;/p&gt;

&lt;p&gt;In my case, I created an S3 Bucket to test a simple website. After configuring the bucket as a static website, I created a new record pointing to the website endpoint.&lt;/p&gt;

&lt;p&gt;For this, I created a new record "&lt;a href="http://www.my-daddy-o.org" rel="noopener noreferrer"&gt;www.my-daddy-o.org&lt;/a&gt;". Please verify that the URL resolves to your bucket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypeqw5tru9tecc65ptcd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypeqw5tru9tecc65ptcd.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipabjmxhqzb2ihlfl9mb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipabjmxhqzb2ihlfl9mb.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dns</category>
      <category>route53</category>
      <category>godaddy</category>
      <category>aws</category>
    </item>
    <item>
      <title>Implementing AWS Config for your Organization with CloudFormation</title>
      <dc:creator>Diego Trujillo</dc:creator>
      <pubDate>Tue, 04 Jun 2024 05:33:07 +0000</pubDate>
      <link>https://forem.com/diegop0s/aws-config-for-organizations-3i6p</link>
      <guid>https://forem.com/diegop0s/aws-config-for-organizations-3i6p</guid>
      <description>&lt;h2&gt;
  
  
  Objective
&lt;/h2&gt;

&lt;p&gt;This lab is centered on deploying &lt;strong&gt;AWS Config&lt;/strong&gt; within your AWS Organization for the first time. It's advisable to familiarize yourself with essential concepts of AWS Config, AWS CloudFormation, and how they integrate with AWS Organizations if you are new to them. In case you're interested I have published a concise &lt;a href="https://dev.to/diegotrujillo/introduction-to-aws-config-544k"&gt;summary of AWS Config in a separate post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I was motivated to develop this lab since I was testing some AWS Organization features and started creating multiple accounts. Subsequently, I recognized that deploying basic AWS Security Services across all accounts would be the most secure approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution Structure
&lt;/h2&gt;

&lt;p&gt;With that in mind, there are numerous options available for AWS Config. In this lab, we will utilize the following setup and components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(Pre-requisite) An AWS Organization must be already set up.&lt;/li&gt;
&lt;li&gt;We'll use AWS CloudFormation StackSets to automatically enable AWS Config on every member account. It should be noted that as per the &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeploymentTargets.html" rel="noopener noreferrer"&gt;AWS Documentation&lt;/a&gt;, the StackSet will not be deployed to the Management Account.&lt;/li&gt;
&lt;li&gt;As we plan to integrate AWS Config and AWS CloudFormation with AWS Organizations, we will assign the role of Delegated Administrator to one member account, thereby avoiding using the Management Account.&lt;/li&gt;
&lt;li&gt;We will create a single S3 Bucket within the Delegated Admin account to centralize AWS Config Log files from all member accounts.&lt;/li&gt;
&lt;li&gt;We will deploy a CloudFormation Stack to set up the Config StackSet and the centralized S3 Bucket.&lt;/li&gt;
&lt;li&gt;Once AWS Config is enabled across all accounts, we will begin establishing Organization Config Rules within the Delegated Admin account.&lt;/li&gt;
&lt;li&gt;Finally, a Config Aggregator will be set up in the Delegated Admin account to consolidate compliance data from all accounts and create reports.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Accounts Structure&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr36ey5arq78ntmibi3vy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr36ey5arq78ntmibi3vy.jpg" alt="Image description" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Steps
&lt;/h2&gt;

&lt;p&gt;Below are the sequential steps for deploying our AWS Config solution. The complete source code is available in the &lt;a href="https://github.com/diegotrp/lab-awsconfig-for-orgs" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assign a Delegated Administrator for AWS Config and CloudFormation.&lt;/li&gt;
&lt;li&gt;Establish AWS Config Recorders using CloudFormation StackSets.&lt;/li&gt;
&lt;li&gt;Implement Organization Config Rules across all accounts.&lt;/li&gt;
&lt;li&gt;Set up an AWS Aggregator for cross-account reporting.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Step 1. Assign a Delegated Administrator for AWS Config and CloudFormation.
&lt;/h2&gt;

&lt;p&gt;As mentioned in AWS Documentation, run the following commands from the Management Account for enabling &lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/set-up-aggregator-cli.html#register-a-delegated-administrator-cli" rel="noopener noreferrer"&gt;AWS Config&lt;/a&gt; and &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html#:~:text=To%20register%20a%20delegated%20administrator%20%28console%29%20Sign%20in,StackSets.%20Under%20Delegated%20administrators%2C%20choose%20Register%20delegated%20administrator." rel="noopener noreferrer"&gt;AWS CloudFormation&lt;/a&gt; for your Organization, and assigning a Delegated Admin.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable service access as a delegated administrator for your organization to aggregate AWS Config data across your organization:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws organizations enable-aws-service-access --service-principal=config.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Enable service access as a delegated administrator for your organization to deploy and manage AWS Config rules and conformance packs across your organization:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws organizations enable-aws-service-access --service-principal=config-multiaccountsetup.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Enable service access as delegated administrator for your organization to create and manage stack sets across your organization:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws organizations enable-aws-service-access --service-principal=member.org.stacksets.cloudformation.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;To check if the enable service access is complete, enter the following command and press Enter to execute the command:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws organizations list-aws-service-access-for-organization
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You should see output similar to the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "EnabledServicePrincipals": [
        {
            "ServicePrincipal": "config-multiaccountsetup.amazonaws.com",
            "DateEnabled": "2024-05-23T18:09:52.878000+00:00"
        },
        {
            "ServicePrincipal": "config.amazonaws.com",
            "DateEnabled": "2024-05-24T16:27:31.462000+00:00"
        },
        {
            "ServicePrincipal": "member.org.stacksets.cloudformation.amazonaws.com",
            "DateEnabled": "2024-05-24T16:56:08.933000+00:00"
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Next, enter the following commands to register a member account as a Delegated Admin for Config and CloudFormation:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws organizations register-delegated-administrator --service-principal=config-multiaccountsetup.amazonaws.com --account-id MemberAccountID
aws organizations register-delegated-administrator --service-principal=config.amazonaws.com --account-id MemberAccountID
aws organizations register-delegated-administrator --service-principal=member.org.stacksets.cloudformation.amazonaws.com --account-id MemberAccountID
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To check if the registration of the delegated administrator is complete, enter the following commands:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws organizations list-delegated-administrators --service-principal=config-multiaccountsetup.amazonaws.com
aws organizations list-delegated-administrators --service-principal=config.amazonaws.com
aws organizations list-delegated-administrators --service-principal=member.org.stacksets.cloudformation.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see output similar to the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "DelegatedAdministrators": [
        {
            "Id": "MemberAccountID",
            "Arn": "arn:aws:organizations::MemberAccountID:account/o-c7esubdi38/MemberAccountID",
            "Email": "name@amazon.com",
            "Name": "name",
            "Status": "ACTIVE",
            "JoinedMethod": "INVITED",
            "JoinedTimestamp": 1604867734.48,
            "DelegationEnabledDate": 1607020986.801
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can validate the following IAM Roles created on your AWS Member Accounts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWSServiceRoleForConfig&lt;/li&gt;
&lt;li&gt;AWSServiceRoleForConfigMultiAccountSetup&lt;/li&gt;
&lt;li&gt;AWSServiceRoleForCloudFormationStackSetsOrgMember&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2. Establish AWS Config Recorders using CloudFormation StackSets.
&lt;/h2&gt;

&lt;p&gt;Before setting up Config Rules, it is necessary to begin recording resource changes, which requires the creation of a Configuration Recorder in each member account of our Organization.&lt;/p&gt;

&lt;p&gt;There are various methods to activate AWS Config across multiple accounts; however, in this lab, we will utilize AWS CloudFormation StackSets to centrally manage Config Recorders from the Delegated Admin Account. We will also employ a Service-managed StackSet to automatically generate the required IAM Roles, prefixed with "stacksets-exec."&lt;/p&gt;

&lt;p&gt;AWS offers various CloudFormation templates for AWS Config; however, we will utilize the template named &lt;a href="https://cloudformation-stackset-sample-templates-us-east-1.s3.us-east-1.amazonaws.com/EnableAWSConfigForOrganizations.yml" rel="noopener noreferrer"&gt;EnableAWSConfigForOrganizations.yml&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;You can review the entire file to see all the functionalities the template supports. In this lab, we will concentrate on the following resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuration Recorder to record all resource types (or to filter the resource types you prefer)&lt;/li&gt;
&lt;li&gt;Delivery Channel to send Config History and Config Snapshot files to S3, and optionally to SNS
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ConfigRecorder:
    Type: AWS::Config::ConfigurationRecorder
    Properties:
      RecordingGroup:
        AllSupported: !Ref AllSupported
        IncludeGlobalResourceTypes: !Ref IncludeGlobalResourceTypes
        ResourceTypes: !If
          - IsAllSupported
          - !Ref AWS::NoValue
          - !Ref ResourceTypes
      RoleARN:
        Fn::Sub:
          "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig"

  ConfigDeliveryChannel:
    Type: AWS::Config::DeliveryChannel
    Properties:
      Name: !If
        - IsGeneratedDeliveryChannelName
        - !Ref AWS::NoValue
        - !Ref DeliveryChannelName
      ConfigSnapshotDeliveryProperties: !If
        - DisableSnapshots
        - !Ref AWS::NoValue
        - DeliveryFrequency: !FindInMap
            - Settings
            - FrequencyMap
            - !Ref Frequency
      S3BucketName: !If
        - CreateBucket
        - !Ref ConfigBucket
        - !Ref S3BucketName
      S3KeyPrefix: !If
        - UsePrefix
        - !Ref S3KeyPrefix
        - !Ref AWS::NoValue
      SnsTopicARN: !If
        - UseSNS
        - !If
          - CreateTopic
          - !Ref ConfigTopic
          - !Ref TopicArn
        - !Ref AWS::NoValue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I have developed a CloudFormation template that implements our StackSet for enabling AWS Config on all accounts, thereby automating its creation via the AWS CLI. The template includes the following functionalities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creation of a new S3 Bucket exclusively for centralized AWS Config logging.&lt;/li&gt;
&lt;li&gt;Implementation of the StackSet across all our organization accounts, with the Delivery Channel set up to relay logs to the centralized S3 Bucket.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please review the entire template and make any necessary modifications as needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWSTemplateFormatVersion: 2010-09-09
Description:
  This CloudFormation Stack creates a StackSet that deploys the "EnableAWSConfigForOrganizations.yml" template to an Organization, in addition to a S3 Bucket for centralized logging.
  The StackSet will deploy a Stack containing the Config componentes to each member account.
Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: General Parameters
        Parameters:
          - ConfigRegions
          - TagName
          - TagUnit
          - TagEnvironment
      - Label:
          default: Centralized Bucket Parameters
        Parameters:
          - OrganizationId
          - CentralizedBucketName
      - Label:
          default: Cfn StackSet Resource Parameters
        Parameters:
          - StackSetOuId
          - StackSetAutoDeployment
          - StackSetManagedExecution
          - StackSetCallAsAccount
      - Label:
          default: Config StackSet Template Parameters
        Parameters:
          - StSeParAllSupported
          - StSeParIncludeGlobalResourceTypes
          - StSeParResourceTypes
          - StSeParServiceLinkedRoleRegion
          - StSeParDeliveryChannelName
          - StSeParS3KeyPrefix
          - StSeParFrequency
          - StSeParSNS
          - StSeParTopicArn
          - StSeParNotificationEmail
Parameters:
  ConfigRegions:
    Type: List&amp;lt;String&amp;gt;
    Default: us-east-1
    Description: Specifies list of Regions to be configured as Deployment Target.
  TagName:
    Type: String
    Description: Specifies the prefix for the 'Name' tag for stack resources.
  TagUnit:
    Type: String
    Description: Specifies the value for the 'Unit' tag for stack resources.
  TagEnvironment:
    Type: String
    Description: Specifies the value for the 'Environment' tag for stack resources.
  OrganizationId:
    Type: String
    Default: &amp;lt;OrgId&amp;gt;
    Description: Organization Id, for restricting access to centralized logging bucket.
  CentralizedBucketName:
    Type: String
    Default: &amp;lt;CentrBucket&amp;gt;
    Description: Name for Centralized Logging Bucket in Administration Account.
  StackSetOuId:
    Type: String
    Default: &amp;lt;OuId&amp;gt;
    Description: ID of Organization Unit to be configured as Deployment Target.
  StackSetAutoDeployment:
    Type: String
    Default: true
    Description: Specifies whether to enable Auto Deployment. This feature
      automatically deploys StackSets to AWS Organizations accounts that are
      added to a target.
    AllowedValues:
      - true
      - false
  StackSetManagedExecution:
    Type: String
    Default: false
    Description: Describes whether StackSets performs non-conflicting operations
      concurrently and queues conflicting operations.
    AllowedValues:
      - true
      - false
  StackSetCallAsAccount:
    Type: String
    Default: DELEGATED_ADMIN
    Description:
      Specifies whether you are acting as an account administrator in the
      organization's management account or as a delegated administrator in a
      member account.
    AllowedValues:
      - SELF
      - DELEGATED_ADMIN
  StSeParAllSupported:
    Type: String
    Default: true
    Description:
      StackSet Parameter "AllSupported" - Indicates whether to record all
      supported resource types.
    AllowedValues:
      - true
      - false
  StSeParIncludeGlobalResourceTypes:
    Type: String
    Default: false
    Description:
      StackSet Parameter "IncludeGlobalResourceTypes" - Indicates whether
      AWS Config records all supported global resource types.
    AllowedValues:
      - true
      - false
  StSeParResourceTypes:
    Type: List&amp;lt;String&amp;gt;
    Description:
      StackSet Parameter "ResourceTypes" - A list of valid AWS resource
      types to include in this recording group, such as AWS::EC2::Instance or
      AWS::CloudTrail::Trail.
    Default: &amp;lt;All&amp;gt;
  StSeParServiceLinkedRoleRegion:
    Type: String
    Description:
      StackSet Parameter "ResourceTypes" - A region such as us-east-1. If
      specified, the Config service-linked role will only be created if the
      stack is deployed to this region.
    Default: &amp;lt;DeployToAnyRegion&amp;gt;
  StSeParDeliveryChannelName:
    Type: String
    Default: &amp;lt;Generated&amp;gt;
    Description:
      StackSet Parameter "DeliveryChannelName" - The name of the delivery
      channel.
  StSeParS3KeyPrefix:
    Type: String
    Default: &amp;lt;Prefix&amp;gt;
    Description:
      StackSet Parameter "S3KeyPrefix" - Prefix for the specified Amazon
      S3 bucket.
  StSeParFrequency:
    Type: String
    Default: 24hours
    Description: StackSet Parameter "Frequency" - The frequency with which AWS
      Config delivers configuration snapshots.
    AllowedValues:
      - 1hour
      - 3hours
      - 6hours
      - 12hours
      - 24hours
  StSeParSNS:
    Type: String
    Default: true
    Description:
      StackSet Parameter "TopicArn" - Describes wether AWS Config sends
      SNS notifications.
    AllowedValues:
      - true
      - false
  StSeParTopicArn:
    Type: String
    Default: &amp;lt;New Topic&amp;gt;
    Description:
      StackSet Parameter "TopicArn" - The Amazon Resource Name (ARN) of
      the Amazon Simple Notification Service (Amazon SNS) topic that AWS Config
      delivers notifications to.
  StSeParNotificationEmail:
    Type: String
    Default: &amp;lt;None&amp;gt;
    Description: StackSet Parameter "NotificationEmail" - address for AWS Config
      notifications (for new topics).
Resources:
  CentralizedBucket:
    DeletionPolicy: Retain
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref CentralizedBucketName
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256
      Tags:
        - Key: Name
          Value: !Sub
            - "${tag}-${bucket}"
            - tag: !Ref TagName
              bucket: !Ref CentralizedBucketName
        - Key: Unit
          Value: !Ref TagUnit
        - Key: Environment
          Value: !Ref TagEnvironment
  CentralizedBucketPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket: !Ref CentralizedBucket
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Sid: AWSConfigBucketPermissionsCheck
            Effect: Allow
            Principal:
              Service:
                - config.amazonaws.com
            Action: s3:GetBucketAcl
            Resource:
              - !Sub arn:${AWS::Partition}:s3:::${CentralizedBucket}
            Condition:
              StringEquals:
                aws:SourceOrgID: !Ref OrganizationId
          - Sid: AWSConfigBucketExistenceCheck
            Effect: Allow
            Principal:
              Service:
                - config.amazonaws.com
            Action: s3:ListBucket
            Resource:
              - !Sub arn:${AWS::Partition}:s3:::${CentralizedBucket}
            Condition:
              StringEquals:
                aws:SourceOrgID: !Ref OrganizationId
          - Sid: AWSConfigBucketDelivery
            Effect: Allow
            Principal:
              Service:
                - config.amazonaws.com
            Action: s3:PutObject
            Resource:
              - !Sub arn:${AWS::Partition}:s3:::${CentralizedBucket}/${StSeParS3KeyPrefix}/AWSLogs/*
            Condition:
              StringEquals:
                aws:SourceOrgID: !Ref OrganizationId
  ConfigStackSet:
    Type: AWS::CloudFormation::StackSet
    Properties:
      StackSetName: ConfigStackSet
      Description: StackSet for deploying AWS Config to an Organization Unit
      PermissionModel: SERVICE_MANAGED
      Capabilities:
        - CAPABILITY_IAM
      ManagedExecution:
        Active: !Ref StackSetManagedExecution
      OperationPreferences:
        FailureToleranceCount: 0
        MaxConcurrentCount: 1
        RegionConcurrencyType: SEQUENTIAL
      StackInstancesGroup:
        - DeploymentTargets:
            OrganizationalUnitIds:
              - !Ref StackSetOuId
          Regions: !Ref ConfigRegions
      CallAs: !Ref StackSetCallAsAccount
      AutoDeployment:
        Enabled: !Ref StackSetAutoDeployment
        RetainStacksOnAccountRemoval: true
      Parameters:
        - ParameterKey: AllSupported
          ParameterValue: !Ref StSeParAllSupported
        - ParameterKey: IncludeGlobalResourceTypes
          ParameterValue: !Ref StSeParIncludeGlobalResourceTypes
        - ParameterKey: ResourceTypes
          ParameterValue: !Join
            - ","
            - !Ref StSeParResourceTypes
        - ParameterKey: ServiceLinkedRoleRegion
          ParameterValue: !Ref StSeParServiceLinkedRoleRegion
        - ParameterKey: DeliveryChannelName
          ParameterValue: !Ref StSeParDeliveryChannelName
        - ParameterKey: S3BucketName
          ParameterValue: !Ref CentralizedBucket
        - ParameterKey: S3KeyPrefix
          ParameterValue: !Ref StSeParS3KeyPrefix
        - ParameterKey: Frequency
          ParameterValue: !Ref StSeParFrequency
        - ParameterKey: SNS
          ParameterValue: !Ref StSeParSNS
        - ParameterKey: TopicArn
          ParameterValue: !Ref StSeParTopicArn
        - ParameterKey: NotificationEmail
          ParameterValue: !Ref StSeParNotificationEmail
      TemplateURL: https://cloudformation-stackset-sample-templates-us-east-1.s3.us-east-1.amazonaws.com/EnableAWSConfigForOrganizations.yml
      Tags:
        - Key: Name
          Value: !Sub
            - "${tag}-StackSet"
            - tag: !Ref TagName
        - Key: Unit
          Value: !Ref TagUnit
        - Key: Environment
          Value: !Ref TagEnvironment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upload the template to an S3 Bucket, and then execute the following command, replacing the necessary values.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws cloudformation create-stack --stack-name Config-StackSetConfigRecorder \ 
--template-url https://xxxxxxxx-templates.s3.amazonaws.com/2-StackSetConfigOrg.yml \ 
--parameters \
      ParameterKey=ConfigRegions,ParameterValue=us-east-1 \
      ParameterKey=TagName,ParameterValue=Config-StackSetConfigRecorder \
      ParameterKey=TagUnit,ParameterValue=Security \
      ParameterKey=TagEnvironment,ParameterValue=Prod \
      ParameterKey=OrganizationId,ParameterValue=o-xxxxxxx \
      ParameterKey=CentralizedBucketName,ParameterValue=centralized-aaa-bbb-c \
      ParameterKey=StackSetOuId,ParameterValue=r-xxxx \
      ParameterKey=StackSetAutoDeployment,ParameterValue=true \
      ParameterKey=StackSetManagedExecution,ParameterValue=false \
      ParameterKey=StackSetCallAsAccount,ParameterValue=DELEGATED_ADMIN \
      ParameterKey=StSeParAllSupported,ParameterValue=true \
      ParameterKey=StSeParIncludeGlobalResourceTypes,ParameterValue=false \
      ParameterKey=StSeParResourceTypes,ParameterValue="&amp;lt;All&amp;gt;" \
      ParameterKey=StSeParServiceLinkedRoleRegion,ParameterValue="&amp;lt;DeployToAnyRegion&amp;gt;" \
      ParameterKey=StSeParDeliveryChannelName,ParameterValue="&amp;lt;Generated&amp;gt;" \
      ParameterKey=StSeParS3KeyPrefix,ParameterValue=o-xxxxxxx \
      ParameterKey=StSeParFrequency,ParameterValue=24hours \
      ParameterKey=StSeParSNS,ParameterValue=false \
      ParameterKey=StSeParTopicArn,ParameterValue="&amp;lt;New Topic&amp;gt;" \
      ParameterKey=StSeParNotificationEmail,ParameterValue="&amp;lt;None&amp;gt;"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Following the successful creation of the Stack, you may proceed to verify the establishment of the following resources:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CloudFormation Stack in Delegated Admin account&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0ohul9t2nuly707yzks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0ohul9t2nuly707yzks.png" alt="Image description" width="800" height="231"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;S3 Bucket in Delegated Admin account&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fccp0fjwiw3qb95xk0149.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fccp0fjwiw3qb95xk0149.png" alt="Image description" width="800" height="235"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyzbels8rxaekibzw39o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyzbels8rxaekibzw39o.png" alt="Image description" width="800" height="270"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;CloudFormation StackSet in Delegated Admin account&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl042j0zolohn5453ohzz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl042j0zolohn5453ohzz.png" alt="Image description" width="800" height="277"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;CloudFormation Stacks in Member Accounts&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffcmukm6v0yk2l6qj2dso.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffcmukm6v0yk2l6qj2dso.png" alt="Image description" width="800" height="161"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;IAM Role for Service-managed StackSet in Member Accounts&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16hvtqebu3czshb2xagq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16hvtqebu3czshb2xagq.png" alt="Image description" width="800" height="149"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;AWS Config enabled in Member Accounts&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogqg9teya2uk4qb083z8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogqg9teya2uk4qb083z8.png" alt="Image description" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3. Implement Organization Config Rules across all accounts.
&lt;/h2&gt;

&lt;p&gt;Next, we will deploy a few Organization Config Rules. You can explore all the available &lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html" rel="noopener noreferrer"&gt;Managed Rules&lt;/a&gt; or create your Custom Rules. For this lab, we will use the ACCESS_KEYS_ROTATED and REQUIRED_TAGS rules to fit my use case.&lt;/p&gt;

&lt;p&gt;It should be noted that Organization Config Rules are automatically deployed to the Management Account. However, during Step 2, when the StackSet was deployed to activate Config, it did not include the Management Account. Therefore, if you wish to set up Config for the Management Account, you must first manually activate Config and then establish the necessary Service-Linked accounts using these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws iam create-service-linked-role --aws-service-name config.amazonaws.com
aws iam create-service-linked-role --aws-service-name config-multiaccountsetup.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For simplicity, we will not deploy Config Rules to the Management Account. Therefore, we will include an additional parameter "ExcludedAccounts" with the Management account ID as its value to prevent the creation of Config Rules in that account.&lt;/p&gt;

&lt;p&gt;Please review the following template and make any necessary modifications as needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWSTemplateFormatVersion: 2010-09-09
Description: This CloudFormation Stack creates a StackSet that deploys a group of Organization Config Rules.
Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: Organization Config Rules Parameters
        Parameters:
          - OrgRulePrefixName
Parameters:
  OrgRulePrefixName:
    Type: String
    Default: &amp;lt;OrgRulePrefix&amp;gt;
    Description: Prefix for the name of the Organization Config Rules.
  OrgRuleExcludedAccounts:
    Type: List&amp;lt;String&amp;gt;
    Default: &amp;lt;OrgRuleExcludedAccounts&amp;gt;
    Description: List of excluded accounts for the Organization Config Rules.
Resources:
  ConfigOrgRuleRequiredTags:
    Type: AWS::Config::OrganizationConfigRule
    Properties:
      OrganizationConfigRuleName: !Sub
        - "${prefix}-requiredtags"
        - prefix: !Ref OrgRulePrefixName
      ExcludedAccounts: !Ref OrgRuleExcludedAccounts
      OrganizationManagedRuleMetadata:
        RuleIdentifier: REQUIRED_TAGS
        Description: Checks if your resources have the standard tags.
        InputParameters: !Sub '{"tag1Key":"Name", "tag2Key":"Unit", "tag2Value":"Management,Security,Applications", "tag3Key":"Environment", "tag3Value": "Prod,Dev,Test,Sandbox"}'
  ConfigOrgRuleAccessKeysRotated:
    Type: AWS::Config::OrganizationConfigRule
    Properties:
      OrganizationConfigRuleName: !Sub
        - "${prefix}-accesskeysrotation"
        - prefix: !Ref OrgRulePrefixName
      ExcludedAccounts: !Ref OrgRuleExcludedAccounts
      OrganizationManagedRuleMetadata:
        RuleIdentifier: ACCESS_KEYS_ROTATED
        Description: Checks if active IAM access keys are rotated within 90 days.
        InputParameters: !Sub '{"maxAccessKeyAge": "90"}'
        MaximumExecutionFrequency: TwentyFour_Hours
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upload the new template to S3 and run the following command for creating the stack.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws cloudformation create-stack --stack-name Config-OrgConfigRules \ 
--template-url https://xxxxxxxx-templates.s3.amazonaws.com/3-StackSetConfigRules.yml \ 
--parameters \
      ParameterKey=TagName,ParameterValue=Config-StackSetConfigRecorder \
      ParameterKey=TagUnit,ParameterValue=Security \
      ParameterKey=TagEnvironment,ParameterValue=Prod \
      ParameterKey=OrgRulePrefixName,ParameterValue="compliance" \
      ParameterKey=OrgRuleExcludedAccounts,ParameterValue="XXXXXXXXXXXXX"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After successfully creating the Stack, you can confirm the establishment of the Config Rules in the Member Accounts:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;List Organization Config Rules using the CLI&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws configservice describe-organization-config-rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzu1g0l8rudxmm2e2nzgu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzu1g0l8rudxmm2e2nzgu.png" alt="Image description" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;List Organization Config Rules using the Console&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6wr57daaz7toehr07q3x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6wr57daaz7toehr07q3x.png" alt="Image description" width="800" height="238"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 4. Set up an AWS Aggregator for cross-account reporting.
&lt;/h2&gt;

&lt;p&gt;Now that we've implemented some Config Rules, it's necessary to have a straightforward method to monitor compliance across all accounts, which is why we are proceeding to establish our Config Aggregator.&lt;/p&gt;

&lt;p&gt;We will create a final stack to deploy the Config Aggregator, along with a new IAM Role that the Aggregator needs to gather data from all accounts within an organization.&lt;/p&gt;

&lt;p&gt;Please review the following template and make any necessary modifications as needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWSTemplateFormatVersion: 2010-09-09
Description: This CloudFormation Stack creates a StackSet that deploys the
  "EnableAWSConfig.yml" template to an Organization
Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: General Parameters
        Parameters:
          - ConfigRegions
          - TagName
          - TagUnit
          - TagEnvironment
      - Label:
          default: Aggregator Parameters
        Parameters:
          - ConfigAggRoleName
          - ConfigAggName
Parameters:
  ConfigRegions:
    Type: List&amp;lt;String&amp;gt;
    Default: us-east-1
    Description: Specifies list of Regions to be configured as Deployment Target.
  TagName:
    Type: String
    Description: Specifies the prefix for the 'Name' tag for stack resources.
  TagUnit:
    Type: String
    Description: Specifies the value for the 'Unit' tag for stack resources.
  TagEnvironment:
    Type: String
    Description: Specifies the value for the 'Environment' tag for stack resources.
  ConfigAggRoleName:
    Type: String
    Default: &amp;lt;AggregatorRoleName&amp;gt;
    Description: Name for Config Aggregator IAM Role.
  ConfigAggName:
    Type: String
    Default: &amp;lt;AggregatorName&amp;gt;
    Description: Name for Config Aggregator.
Resources:
  ConfigAggregatorRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Ref ConfigAggRoleName
      Description: Role for organizational AWS Config aggregator
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service: config.amazonaws.com
            Action: sts:AssumeRole
      Path: /
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSConfigRoleForOrganizations
      Tags:
        - Key: Name
          Value: !Sub
            - "${tag}-${rolename}"
            - tag: !Ref TagName
              rolename: !Ref ConfigAggRoleName
        - Key: Unit
          Value: !Ref TagUnit
        - Key: Environment
          Value: !Ref TagEnvironment
  ConfigAggregator:
    Type: AWS::Config::ConfigurationAggregator
    Properties:
      ConfigurationAggregatorName: !Ref ConfigAggName
      OrganizationAggregationSource:
        AllAwsRegions: false
        AwsRegions: !Ref ConfigRegions
        RoleArn: !GetAtt ConfigAggregatorRole.Arn
      Tags:
        - Key: Name
          Value: !Sub
            - "${tag}-${agg}"
            - tag: !Ref TagName
              agg: !Ref ConfigAggName
        - Key: Unit
          Value: !Ref TagUnit
        - Key: Environment
          Value: !Ref TagEnvironment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upload the new template to S3 and run the following command to create the stack.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws cloudformation create-stack --stack-name Config-OrgConfigAggregator \ 
--template-url https://xxxxxxxx-templates.s3.amazonaws.com/4-StackSetConfigAgg.yml \ 
--capabilities CAPABILITY_NAMED_IAM \ 
--parameters \
    ParameterKey=ConfigRegions,ParameterValue=us-east-1 \
    ParameterKey=TagName,ParameterValue=Config-StackSetConfigRecorder \
    ParameterKey=TagUnit,ParameterValue=Security \
    ParameterKey=TagEnvironment,ParameterValue=Prod \
    ParameterKey=ConfigAggRoleName,ParameterValue="ConfigAggregatorRole" \
    ParameterKey=ConfigAggName,ParameterValue="aggregator"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the command is executed successfully, an 'OK' status will appear on the aggregator page. However, the aggregator dashboard may take a while to reflect the data from all accounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc97xsnape6oxitidusri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc97xsnape6oxitidusri.png" alt="Image description" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can execute a query in the Console utilizing data from all accounts and examine all the available fields. To view data from all S3 buckets, run the following query.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT
  resourceId,
  resourceName,
  resourceCreationTime,
  accountId
WHERE
  resourceType = 'AWS::S3::Bucket'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjgi6emxe9zygmva7s6x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjgi6emxe9zygmva7s6x.png" alt="Image description" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleanup
&lt;/h2&gt;

&lt;p&gt;This lab outlined enabling AWS Config using the AWS CLI to easily replicate each setting. It's important to remember to clean up all CloudFormation stacks and any IAM Role created by AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further steps
&lt;/h2&gt;

&lt;p&gt;If you're interested in further exploring AWS Config features and enhancing your setup, consider these suggestions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement Conformance Packs to utilize a single template that establishes Config Rules across all accounts, avoiding the constraints of Organization Config Rules that necessitate individual rule definition.&lt;/li&gt;
&lt;li&gt;Extend the scope of AWS Config to a multi-region setting within AWS Organizations.&lt;/li&gt;
&lt;li&gt;Introduce server-side encryption for the Centralized S3 Bucket using KMS, which will entail adding IAM Policies to numerous IAM Roles.&lt;/li&gt;
&lt;li&gt;Experiment with AWS Control Tower, a service that simplifies many of the manual configurations associated with AWS Config.&lt;/li&gt;
&lt;li&gt;Implement SNS Notifications for the Config Delivery channel to centralize all messages into one account.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Additional resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/set-up-aggregator-cli.html#add-an-aggregator-organization-cli" rel="noopener noreferrer"&gt;AWS Config: Setting Up an Aggregator Using the AWS Command Line Interface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/mt/using-delegated-admin-for-aws-config-operations-and-aggregation/" rel="noopener noreferrer"&gt;Using delegated admin for AWS Config operations and aggregation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html" rel="noopener noreferrer"&gt;AWS CloudFormation: Working with AWS CloudFormation StackSets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html" rel="noopener noreferrer"&gt;AWS CloudFormation: StackSets concepts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>config</category>
      <category>audit</category>
      <category>security</category>
    </item>
    <item>
      <title>Overview of AWS Config: Concepts and Components</title>
      <dc:creator>Diego Trujillo</dc:creator>
      <pubDate>Wed, 29 May 2024 21:53:17 +0000</pubDate>
      <link>https://forem.com/diegop0s/introduction-to-aws-config-544k</link>
      <guid>https://forem.com/diegop0s/introduction-to-aws-config-544k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;AWS Config is a fully managed service that provides you with &lt;strong&gt;resource inventory, configuration history, and configuration change&lt;/strong&gt; notifications for security and governance. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AWS Config is an auditing service that keeps track of changes made to your AWS resources and allows you to monitor configuration data over time for detecting potential security and operational issues.&lt;/p&gt;

&lt;p&gt;This post focuses on some introductory concepts for AWS Config that are not always kept in mind when inspecting the AWS Console for Config, which performs many operations under the surface for us, but in case you want to use another way for setting up your AWS Config these concepts will be very important.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. AWS Config
&lt;/h2&gt;

&lt;p&gt;AWS Config is a fully managed service that provides you with &lt;strong&gt;resource inventory, configuration history, and configuration change&lt;/strong&gt; notifications for security and governance. &lt;/p&gt;

&lt;p&gt;AWS Config provides a detailed view of the configuration of AWS resources in your AWS account. This includes how the resources are related to one another and how they were configured in the past so that you can see how the configurations and relationships change over time.&lt;/p&gt;

&lt;p&gt;AWS Config tracks changes made to these supported AWS resources and records their changes as &lt;strong&gt;configuration items (CIs)&lt;/strong&gt;, which are &lt;strong&gt;JSON files delivered to an Amazon Simple Storage Service (Amazon S3) bucket&lt;/strong&gt;. These files are accessed through AWS Config APIs and &lt;strong&gt;optionally sent through Amazon Simple Notification Service (Amazon SNS)&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Configuration Items (CI)
&lt;/h2&gt;

&lt;p&gt;A configuration item represents a point-in-time view of the various attributes of a supported AWS resource that exists in your account. The components of a configuration item include &lt;strong&gt;metadata, attributes, relationships, current configuration, and related events&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;AWS Config creates a &lt;strong&gt;configuration item&lt;/strong&gt; whenever it detects a change to a resource type that it is recording. You can select AWS Config to create a configuration item at the recording frequency that you set: &lt;strong&gt;Continuous recording&lt;/strong&gt; which records configuration changes continuously whenever a change occurs, and &lt;strong&gt;Daily recording&lt;/strong&gt; which creates a configuration item (CI) representing the most recent state of your resources over the last 24-hour period (only if it’s different from the previous CI recorded).&lt;/p&gt;

&lt;p&gt;Here is an example of a Configuration Item for a Resource Group:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "relatedEvents": [],
    "relationships": [
        {
            "resourceId": "vpc-XXXXXXXXXXXX",
            "resourceType": "AWS::EC2::VPC",
            "name": "Is contained in Vpc"
        }
    ],
    "configuration": {
        "description": "default VPC security group",
        "groupName": "default",
        "ipPermissions": [
            {
                "ipProtocol": "-1",
                "ipv6Ranges": [],
                "prefixListIds": [],
                "userIdGroupPairs": [
                    {
                        "groupId": "sg-YYYYYYYYYYYY",
                        "userId": "0000000000"
                    }
                ],
                "ipv4Ranges": [],
                "ipRanges": []
            }
        ],
        "ownerId": "0000000000",
        "groupId": "sg-YYYYYYYYYYYY",
        "ipPermissionsEgress": [
            {
                "ipProtocol": "-1",
                "ipv6Ranges": [],
                "prefixListIds": [],
                "userIdGroupPairs": [],
                "ipv4Ranges": [
                    {
                        "cidrIp": "0.0.0.0/0"
                    }
                ],
                "ipRanges": [
                    "0.0.0.0/0"
                ]
            }
        ],
        "tags": [],
        "vpcId": "vpc-XXXXXXXXXXXX"
    },
    "supplementaryConfiguration": {},
    "tags": {},
    "configurationItemVersion": "1.3",
    "configurationItemCaptureTime": "YYYY-MM-DDTHH:MM:SS.000Z",
    "configurationStateId": 0000000000,
    "awsAccountId": "0000000000",
    "configurationItemStatus": "ResourceDiscovered",
    "resourceType": "AWS::EC2::SecurityGroup",
    "resourceId": "sg-YYYYYYYYYYYY",
    "resourceName": "default",
    "ARN": "arn:aws:ec2:us-east-1:0000000000:security-group/sg-YYYYYYYYYYYY",
    "awsRegion": "us-east-1",
    "availabilityZone": "Not Applicable",
    "configurationStateMd5Hash": ""
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Configuration History
&lt;/h2&gt;

&lt;p&gt;A configuration history is a collection of the configuration items for a specific resource type over any time period. &lt;strong&gt;Each file includes resources of only one type&lt;/strong&gt;, such as Amazon EC2 instances or Amazon EBS volumes. If no configuration changes occur, AWS Config does not send a file.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Configuration History Files are useful when you’re looking for the historical configuration state for a specific resource type.&lt;/em&gt;&lt;br&gt;
AWS Config delivers configuration history files &lt;strong&gt;automatically after enabling the Configuration Recorder and Delivery Channel&lt;/strong&gt; to an &lt;strong&gt;Amazon S3 bucket&lt;/strong&gt; that you specify. AWS Config sends a configuration history file every six hours, and each file contains details about the resources that changed in that six-hour period.&lt;/p&gt;

&lt;p&gt;You can select a given resource in the AWS Config console and navigate to all previous configuration items for that resource using the timeline.&lt;/p&gt;

&lt;p&gt;Here is an example of a Configuration History File, with a name in the format &lt;code&gt;{accountId}_Config_{region}_ConfigHistory_{resourceType}_{time}&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{ // Configuration File for AWS::S3::Bucket Resource Type
    "fileVersion": "1.0",
    "configurationItems": [
        { 
            // CI S3 Bucket "A"
        },
        { 
            // CI S3 Bucket "B"
        },
        // Additional S3 Buckets
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Configuration Snapshot
&lt;/h2&gt;

&lt;p&gt;A configuration snapshot is a collection of the configuration items for the supported resources that exist in your account. This configuration snapshot is a &lt;strong&gt;point-in-time capture&lt;/strong&gt; of the resources that are being recorded and their configurations.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Configuration Snapshot Files are useful when you’re looking for the current configuration state for all supported resources in an account.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;By default &lt;strong&gt;Configuration Snapshots are not automatically enabled&lt;/strong&gt; just by enabling the Configuration Recorder and Delivery Channel, you must configure the Delivery Channel with a specific snapshot delivery frequency of 1, 3, 6, 12, or 24 hours. You can have the configuration snapshots delivered to an Amazon Simple Storage Service (Amazon S3) bucket that you specify. &lt;/p&gt;

&lt;p&gt;Here is an example of a Configuration History File, with a name in the format &lt;code&gt;{accountId}_Config_{region}_ConfigSnapshot_{time}&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "fileVersion": "1.0",
    "configSnapshotId": "677bc092-27a0-4831-9c08-012eed635738",
    "configurationItems": [
        { 
            // CI CloudFormation Stack "A"
        },
        { 
            // CI S3 Bucket "B"
        },
        { 
            // CI S3 Bucket "C"
        },
        { 
            // CI SNS Topic "D"
        },
        // Additional Resources
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Configuration Recorder
&lt;/h2&gt;

&lt;p&gt;The configuration recorder &lt;strong&gt;stores the configurations of the supported resources in your account as configuration items&lt;/strong&gt;. You must first create and then start the configuration recorder before you can start recording. You can stop and restart the configuration recorder at any time.&lt;/p&gt;

&lt;p&gt;By default, the configuration recorder records all supported resources in the region where AWS Config is running. You can create a customized configuration recorder that records only the resource types that you specify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you use the AWS Management Console or the CLI to turn on the service, AWS Config automatically creates and starts a configuration recorder for you.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Delivery Channel
&lt;/h2&gt;

&lt;p&gt;As AWS Config continually records the changes that occur to your AWS resources, it sends notifications and updated configuration states through the delivery channel. You can &lt;strong&gt;manage the delivery channel to control where AWS Config sends configuration updates&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before you can create a delivery channel, you must create a configuration recorder. You can have only one delivery channel per AWS Region per AWS account, and the delivery channel is required to use AWS Config.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Delivery of CIs to Amazon S3
&lt;/h2&gt;

&lt;p&gt;As mentioned above AWS Config sends &lt;strong&gt;Configuration History Files every six hours&lt;/strong&gt; to S3, after enabling the configuration recorder.&lt;br&gt;
In the case of &lt;strong&gt;Configuration Snapshots, they are sent when a user manually performs the DeliverConfigSnapshot API call or the API is invoked according to a periodic setting for the snapshot every 1, 3, 6, 12, or 24 hours&lt;/strong&gt;, according to the Delivery Channel setting.&lt;br&gt;
&lt;strong&gt;Snapshots and History files use the same format to be stored in S3 and are sent to the same Bucket in two different folders &lt;em&gt;ConfigHistory _and _ConfigSnapshot&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Config Notifications and Amazon SNS&lt;/strong&gt;&lt;br&gt;
AWS Config uses the &lt;strong&gt;Amazon SNS topic that you optionally specify&lt;/strong&gt; in the Delivery Channel.&lt;br&gt;
AWS Config sends notifications for the following events:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuration item change for a resource.&lt;/li&gt;
&lt;li&gt;Configuration history for a resource was delivered for your account.&lt;/li&gt;
&lt;li&gt;Configuration snapshot for recorded resources was started and delivered for your account.&lt;/li&gt;
&lt;li&gt;Compliance state of your resources and whether they are compliant with your rules.&lt;/li&gt;
&lt;li&gt;Evaluation started for a rule against your resources.&lt;/li&gt;
&lt;li&gt;AWS Config failed to deliver the notification to your account.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. Config Rules
&lt;/h2&gt;

&lt;p&gt;An AWS Config rule represents &lt;strong&gt;desired configurations for a resource&lt;/strong&gt; and is evaluated against configuration changes on the relevant resources, as recorded by AWS Config. If a resource does not comply with the rule, AWS Config flags the resource and the rule as noncompliant.&lt;br&gt;
There are two types of rules: &lt;strong&gt;AWS Config Managed Rules&lt;/strong&gt; (predefined) and &lt;strong&gt;AWS Config Custom Rules&lt;/strong&gt; (created using Lambda Functions or using Guard language).&lt;br&gt;
When creating a Config Rule you can choose the &lt;strong&gt;trigger type&lt;/strong&gt; to specify how often your AWS Config rules evaluate your resources: Resources can be evaluated when there are configuration changes, on a periodic schedule, or both.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. AWS Config for AWS Organizations
&lt;/h2&gt;

&lt;p&gt;AWS Config helps you centrally manage your Config Rules and data visualization (CIs, queries, reports, etc.) for all your Member accounts using different features of AWS Config&lt;/p&gt;

&lt;p&gt;For using AWS Config services with AWS Organizations you'll need to use the&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html"&gt;EnableAWSServiceAccess&lt;/a&gt; action (using the API, CLI or Console), which enables the integration and allows AWS Config to create a Service-Linked Role in all accounts in your organization. This allows the AWS Config service to perform operations on your behalf in your organization and its accounts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/set-up-aggregator-cli.html#add-an-aggregator-organization-cli"&gt;AWS Documentation&lt;/a&gt; indicates to enable the principals &lt;code&gt;config.amazonaws.com&lt;/code&gt; (for AWS Config) and &lt;code&gt;config-multiaccountsetup.amazonaws.com&lt;/code&gt; (for managing multi-account AWS Config Rules).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Delegated Administrator for AWS Config&lt;/em&gt;&lt;br&gt;
AWS Organizations allows you to delegate tasks or responsibilities to member accounts. The designated member account then becomes &lt;strong&gt;delegated administrators,&lt;/strong&gt; meaning that they can perform a &lt;strong&gt;specific activity or manage a specific AWS service across accounts, on behalf of the organization&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AWS Config is one of the AWS services operating across accounts and supporting delegation in AWS Organizations. The Delegated Administrator supports using &lt;strong&gt;Aggregators&lt;/strong&gt; for multi-account, multi-region resource data aggregation.&lt;/p&gt;

&lt;p&gt;If you are using an organization management account and intend to use a delegated administrator for organizational deployment, be aware that AWS Config won't automatically create the service-linked role (SLR). You must manually create the service-linked role (SLR) separately using IAM, or using the EnableAWSServiceAccess API as mentioned above.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Organizational Rules
&lt;/h2&gt;

&lt;p&gt;AWS Config supports Organizational Rules, which allows you to &lt;strong&gt;manage AWS Config rules across all AWS accounts within an organization&lt;/strong&gt;. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centrally create, update, and delete AWS Config rules across all accounts in your organization.&lt;/li&gt;
&lt;li&gt;Deploy a common set of AWS Config rules across all accounts and specify accounts where AWS Config rules should not be created.&lt;/li&gt;
&lt;li&gt;Use the APIs from the management account in AWS Organizations to enforce governance by ensuring that the underlying AWS Config rules are not modifiable by your organization’s member accounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember that &lt;strong&gt;Organizational Rules can only be created using the API or CLI&lt;/strong&gt;. This operation is not supported in the AWS Config console. In addition, when configuring Organizational Rules, each one can only include one AWS Config Rule, so in case you want to use many Config Rules for your Organization Accounts you will have to manage many separate Organizational Rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Conformance Packs
&lt;/h2&gt;

&lt;p&gt;A conformance pack is a &lt;strong&gt;collection of AWS Config rules and remediation action&lt;/strong&gt;s that can be easily &lt;strong&gt;deployed as a single entity in an account and a Region or across an organization in AWS Organizations&lt;/strong&gt;.&lt;br&gt;
Conformance packs are created by authoring a YAML template that contains the list of AWS Config managed or custom rules and remediation actions. You can also use AWS Systems Manager documents (SSM documents) to store your conformance pack templates on AWS and directly deploy conformance packs using SSM document names. &lt;strong&gt;You can deploy the template by using the AWS Config console or the AWS CLI.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  13. Aggregators
&lt;/h2&gt;

&lt;p&gt;An aggregator is an AWS Config resource type that &lt;strong&gt;collects AWS Config configuration and compliance data&lt;/strong&gt; from the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple accounts and multiple AWS Regions.&lt;/li&gt;
&lt;li&gt;Single account and multiple AWS Regions.&lt;/li&gt;
&lt;li&gt;An organization in AWS Organizations and all the accounts in that organization which have AWS Config enabled.
Use an aggregator to &lt;strong&gt;view the resource configuration and compliance data recorded&lt;/strong&gt; in AWS Config. An aggregator uses an Amazon S3 bucket to store aggregated data. &lt;strong&gt;It periodically retrieves configuration snapshots from the source accounts and stores them in the designated S3 bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When setting up an Aggregator, you must use the Management Account or a registered Delegated Administrator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/config/faqs/"&gt;Amazon Config FAQs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/how-does-config-work.html"&gt;AWS Config: How AWS Config Works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/config-concepts.html"&gt;AWS Config: Concepts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/manage-delivery-channel.html"&gt;AWS Config: Managing the Delivery Channel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/config-rule-multi-account-deployment.html"&gt;AWS Config: Managing AWS Config Rules Across All Accounts in Your Organization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html"&gt;AWS Config: Conformance Packs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html"&gt;AWS Config: Multi-Account Multi-Region Data Aggregation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/set-up-aggregator-cli.html#register-a-delegated-administrator-cli"&gt;AWS Config - AggregatoSetting Up an Aggregator Using the AWS Command Line Interface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/mt/configuration-history-configuration-snapshot-files-aws-config/"&gt;Understanding the differences between configuration history and configuration snapshot files in AWS Config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/mt/using-delegated-admin-for-aws-config-operations-and-aggregation/"&gt;Using delegated admin for AWS Config operations and aggregation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>config</category>
      <category>audit</category>
      <category>security</category>
    </item>
  </channel>
</rss>
