<?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>DEV Community: Carlos</title>
    <description>The latest articles on DEV Community by Carlos (@carbans).</description>
    <link>https://dev.to/carbans</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%2F174481%2F8abfd128-0f4e-43f7-9478-edc9f7a72b57.png</url>
      <title>DEV Community: Carlos</title>
      <link>https://dev.to/carbans</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/carbans"/>
    <language>en</language>
    <item>
      <title>Network ACL vs Security Groups</title>
      <dc:creator>Carlos</dc:creator>
      <pubDate>Tue, 13 Feb 2024 12:20:01 +0000</pubDate>
      <link>https://dev.to/carbans/network-acl-vs-security-groups-3lc8</link>
      <guid>https://dev.to/carbans/network-acl-vs-security-groups-3lc8</guid>
      <description>&lt;p&gt;Hi net!&lt;/p&gt;

&lt;p&gt;In my day-to-day, AWS represents over 90% of the time I spend working. That's why there are concepts that I have deeply internalized but I believe many people are unaware of or not entirely clear on, especially those who don't use the cloud on a daily basis.&lt;br&gt;
AWS cloud infrastructure, security is paramount to safeguarding users' resources and data. Two primary tools for managing security in AWS are Security Groups and Network ACLs (Access Control Lists). While both serve a similar function in controlling inbound and outbound traffic, there are fundamental differences in their operation and applications. In this article, we will explore the key differences between Security Groups and Network ACLs.&lt;/p&gt;

&lt;p&gt;Now, let's delve into a detailed table to analysis of each of these AWS cloud security components.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Security Groups&lt;/th&gt;
&lt;th&gt;Network ACLs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Associated with ENIs&lt;/td&gt;
&lt;td&gt;Associated with subnets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OSI Layer Level&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Layer 4 (Stateful firewall)&lt;/td&gt;
&lt;td&gt;Layer 3 (Rule-based firewall)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Control Rules&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Based on allow rules&lt;/td&gt;
&lt;td&gt;Based on allow or deny rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Connection State&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Controls both inbound and outbound traffic&lt;/td&gt;
&lt;td&gt;Controls both inbound and outbound traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Implicit Rules&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Implicit rules allow all traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rule Priority&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unspecified priority&lt;/td&gt;
&lt;td&gt;Rules are evaluated sequentially&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Number of Rules&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Up to 60 rules per group&lt;/td&gt;
&lt;td&gt;Up to 20 rules per list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules by IP Address&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (can filter by IP address)&lt;/td&gt;
&lt;td&gt;Yes (can filter by IP address)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules by Protocol and Port&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (can specify protocols and ports)&lt;/td&gt;
&lt;td&gt;Yes (can specify protocols and ports)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Network Impact&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;More secure as rules can be specific to individual instances&lt;/td&gt;
&lt;td&gt;Less secure as they apply to all instances in the subnet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Common Use Cases&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Specific applications, microsegmentation&lt;/td&gt;
&lt;td&gt;Filtering traffic across the entire subnet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Security Groups:&lt;/strong&gt; Security Groups are security rules associated with individual instances in a network. They operate at Layer 4 (transport layer) and are stateful firewalls, meaning they keep track of the connection state. They can allow or deny traffic based on specific rules, such as protocol, port, and IP address. Security Groups provide a high level of security and allow for precise microsegmentation, making them ideal for specific applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network ACLs:&lt;/strong&gt; Network ACLs are security rules applied at Layer 3 (network layer) and are associated with subnets rather than individual instances. They operate based on allow or deny rules and are applied sequentially. Network ACLs are less secure than Security Groups because they affect all instances in a subnet. They are useful for filtering traffic across the entire subnet but do not allow for as precise segmentation as Security Groups.&lt;/p&gt;

&lt;p&gt;In summary, the primary difference lies in the network layer they operate at, the granularity of rules, and the location to which they are applied. Security Groups are ideal when a high level of security and instance-level control is needed, while Network ACLs are useful for applying rules at the subnet level and filtering traffic on that scale.&lt;/p&gt;

&lt;p&gt;I hope this article has provided clarity and differentiated the usage of these two crucial components in AWS cloud security.  It's important to note that while Security Groups and Network ACLs have their distinct roles, they are complementary in creating comprehensive security strategies within the AWS environment.&lt;/p&gt;

&lt;p&gt;For audit or consultancy needs, feel free to reach out to me for assistance with your infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Hacking&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Bye!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>sg</category>
      <category>nacl</category>
      <category>vpc</category>
    </item>
    <item>
      <title>Sync Repos beetwen Github &amp; Gitlab</title>
      <dc:creator>Carlos</dc:creator>
      <pubDate>Mon, 17 Apr 2023 18:21:56 +0000</pubDate>
      <link>https://dev.to/carbans/sync-repos-beetwen-github-gitlab-b3b</link>
      <guid>https://dev.to/carbans/sync-repos-beetwen-github-gitlab-b3b</guid>
      <description>&lt;p&gt;I'm been using Gitlab since January 17, 2016 and I'm very happy with this tool for years was my main repository of code. But now I have some of repositories in Github and I want to sync them with Gitlab, because I want that Gitlab to be a source of truth&lt;/p&gt;

&lt;p&gt;I research a little bit and I found this &lt;a href="https://github.com/wangchucheng/git-repo-sync"&gt;repo&lt;/a&gt; that show me how I can do it.&lt;/p&gt;

&lt;p&gt;First, we need to look at process of sync:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aEyYWhJn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://carloslatorre.net/images/github-sync-gitlab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aEyYWhJn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://carloslatorre.net/images/github-sync-gitlab.png" alt="Flow of sync" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We need to start creating workflow file into your repo in Github, you can find the file in this &lt;a href="https://github.com/carbans/dotfiles/blob/master/.github/workflows/publishGitlab.yaml"&gt;link&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;GitlabSync&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;push&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;delete&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;sync&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Git Repo Sync&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v3&lt;/span&gt;
      &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;fetch-depth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;wangchucheng/git-repo-sync@v0.1.0&lt;/span&gt;
      &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Such as https://github.com/wangchucheng/git-repo-sync.git&lt;/span&gt;
        &lt;span class="na"&gt;target-url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.TARGET_URL }}&lt;/span&gt;
        &lt;span class="c1"&gt;# Such as wangchucheng&lt;/span&gt;
        &lt;span class="na"&gt;target-username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.TARGET_USERNAME }}&lt;/span&gt;
          &lt;span class="s"&gt;# You can store token in your project's 'Setting &amp;gt; Secrets' and reference the name here. Such as ${{ secrets.ACCESS\_TOKEN }}&lt;/span&gt;
        &lt;span class="na"&gt;target-token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.TARGET_TOKEN }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see we need to create 3 secrets to use this workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TARGET_URL =&amp;gt; &lt;a href="https://gitlab.com/username/test.git"&gt;https://gitlab.com/username/test.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TARGET_USERNAME =&amp;gt; your username in Gitlab&lt;/li&gt;
&lt;li&gt;TARGET_TOKEN =&amp;gt; Access token of your repo settings in Gitlab&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you create the Token into Gitlab you need to add secrets into Github repository. To do these you need to go to Settings &amp;gt; Secrets and add the secrets.&lt;/p&gt;

&lt;p&gt;These not it's the best way to do it, but it's a good way to start and simple way to do it and little maintenance.&lt;/p&gt;

</description>
      <category>git</category>
      <category>sync</category>
      <category>gitlab</category>
      <category>github</category>
    </item>
    <item>
      <title>Proof Keyoxide Dev.to</title>
      <dc:creator>Carlos</dc:creator>
      <pubDate>Wed, 21 Oct 2020 13:43:52 +0000</pubDate>
      <link>https://dev.to/carbans/proof-keyoxide-dev-to-dob</link>
      <guid>https://dev.to/carbans/proof-keyoxide-dev-to-dob</guid>
      <description>&lt;p&gt;This is an OpenPGP proof that connects &lt;a href="https://keyoxide.org/694B7227D97974AD8345EBA53C9ABB5CFEBFED5D"&gt;my OpenPGP key&lt;/a&gt; to &lt;a href="https://dev.to/carbans"&gt;this dev.to account&lt;/a&gt;. For details check out &lt;a href="https://keyoxide.org/guides/openpgp-proofs"&gt;https://keyoxide.org/guides/openpgp-proofs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[Verifying my OpenPGP key: openpgp4fpr:694B7227D97974AD8345EBA53C9ABB5CFEBFED5D]&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hugo Submodules</title>
      <dc:creator>Carlos</dc:creator>
      <pubDate>Sun, 27 Sep 2020 16:50:41 +0000</pubDate>
      <link>https://dev.to/carbans/hugo-submodules-2120</link>
      <guid>https://dev.to/carbans/hugo-submodules-2120</guid>
      <description>&lt;p&gt;Hello!! &lt;/p&gt;

&lt;p&gt;This blog it's made with Hugo, and today I'm going to give you some tips for sync content and git project across different machines.&lt;/p&gt;

&lt;p&gt;It's important know that when you pull your repo the submodules not pull with it. If you want to pull all include submodules you need to type this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="nt"&gt;--recursive&lt;/span&gt; url
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have already cloned a repository and want to load it's submodules you need to type this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git submodule update &lt;span class="nt"&gt;--init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here I'm give you some links to explore and understading the submodules on git.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opensource.com/article/20/5/git-submodules-subtrees"&gt;https://opensource.com/article/20/5/git-submodules-subtrees&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/book/en/v2/Git-Tools-Submodules"&gt;https://git-scm.com/book/en/v2/Git-Tools-Submodules&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hugo</category>
      <category>submodules</category>
    </item>
    <item>
      <title>Hello New World</title>
      <dc:creator>Carlos</dc:creator>
      <pubDate>Fri, 21 Aug 2020 11:19:12 +0000</pubDate>
      <link>https://dev.to/carbans/hello-new-world-1kle</link>
      <guid>https://dev.to/carbans/hello-new-world-1kle</guid>
      <description>&lt;p&gt;Hello! This is my first post in Hugo. In the past, I had a blog in the same domain that used WordPress and it had some posts that I don't want to migrate here because it's a good opportunity to start a new blog.&lt;/p&gt;

&lt;p&gt;I choose Hugo because I don't want to maintain WordPress and I don't want to do an update every week. I don't feel comfortable right now with WordPress. I prefer the freedom of Hugo and I can practice the new cloud methodology that I learned in the last months.&lt;/p&gt;

&lt;p&gt;In this new stage, I will try to write posts in English, (don't forget that my native language it's Spanish) , and I will try that the topic is going related to cloud and networking.&lt;/p&gt;

&lt;p&gt;Thanks for reading me and we'll see you in the next post.&lt;/p&gt;

</description>
      <category>hello</category>
      <category>world</category>
      <category>hugo</category>
      <category>personal</category>
    </item>
  </channel>
</rss>
