<?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: Hudson Tavares</title>
    <description>The latest articles on DEV Community by Hudson Tavares (@hudsontavares).</description>
    <link>https://dev.to/hudsontavares</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%2F686706%2Fa1982c31-0903-46c2-a1a9-6c3c683babcf.jpeg</url>
      <title>DEV Community: Hudson Tavares</title>
      <link>https://dev.to/hudsontavares</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hudsontavares"/>
    <language>en</language>
    <item>
      <title>AWS Cloudwatch: why is it so hairy to pop data out?</title>
      <dc:creator>Hudson Tavares</dc:creator>
      <pubDate>Sat, 19 Mar 2022 11:41:22 +0000</pubDate>
      <link>https://dev.to/hudsontavares/aws-cloudwatch-why-is-it-so-hairy-to-pop-data-out-d34</link>
      <guid>https://dev.to/hudsontavares/aws-cloudwatch-why-is-it-so-hairy-to-pop-data-out-d34</guid>
      <description>&lt;p&gt;For a system using the Amazon cloud provider, it is unavoidable that you may experience some issue that requires checking the logs for some service like API Gateway, Elastic Beanstalk, EC2, or similar, to identify the problem.&lt;/p&gt;

&lt;p&gt;I don't know about you, but I always leave this kind of task with a feeling like "we could have a tool inside of a nice UI working integrated with some log groups, allowing me to [insert some killer features here]."&lt;/p&gt;

&lt;p&gt;But then I remember that these logs are in Cloudwatch. And wonder when will be the next time I face its terminal 🥲&lt;/p&gt;

&lt;p&gt;Some may argue that Cloudwatch has an &lt;a href="https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-cloudwatch"&gt;Athena connector&lt;/a&gt; - but it isn't something you get out-of-the-box, and querying it with Athena is not always the kind of latency your application may afford.&lt;/p&gt;

&lt;p&gt;You can also export the logs to S3, both &lt;a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3ExportTasksConsole.html"&gt;manually&lt;/a&gt; or via &lt;a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3ExportTasks.html"&gt;CLI&lt;/a&gt; - which brings this task either to your Google Calendar or using some CRON-like Cloudwatch Event to trigger a lambda to trigger the CLI.&lt;/p&gt;

&lt;p&gt;Another option is to stream the logs data to the &lt;a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_OpenSearch_Stream.html"&gt;OpenSearch, formerly ElasticSearch&lt;/a&gt;. But it can become quickly expensive.&lt;/p&gt;

&lt;p&gt;My drive against all the options above is the outrage: how Amazon dares to offer you a hard limit of only &lt;a href="https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_FilterLogEvents.html"&gt;ten transactions per second&lt;/a&gt; for querying what is often the most extensive data stream from your application?&lt;/p&gt;

&lt;p&gt;Hard to answer. Hard to query at scale, also.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudwatch</category>
    </item>
    <item>
      <title>Do not delegate the security to your code if you have don't have to</title>
      <dc:creator>Hudson Tavares</dc:creator>
      <pubDate>Sun, 06 Mar 2022 15:28:38 +0000</pubDate>
      <link>https://dev.to/hudsontavares/do-not-delegate-the-security-to-your-code-if-you-have-dont-have-to-1mda</link>
      <guid>https://dev.to/hudsontavares/do-not-delegate-the-security-to-your-code-if-you-have-dont-have-to-1mda</guid>
      <description>&lt;p&gt;In modern web-based development, we moved from an era of custom hosting approaches based on physical servers to a services-based system, where cloud-based technologies host the different composing pieces of our software and manage the communication between them.&lt;/p&gt;

&lt;p&gt;The own hosting definitions also became code in this new era, making technologies like &lt;a href="https://github.com/hashicorp/terraform"&gt;Terraform&lt;/a&gt;, &lt;a href="https://github.com/pulumi/pulumi"&gt;Pulumi&lt;/a&gt;, and &lt;a href="https://github.com/aws/aws-cdk"&gt;CDK&lt;/a&gt; very popular (31.5k, 11.6k, and 8.5k Github stars, respectively) due to their deployment and orchestration capabilities.&lt;/p&gt;

&lt;p&gt;As we deploy our code to the inherently secure cloud environments of Amazon, Google, Oracle, and others, we're prone to embrace the misleading assumption that these cloud providers will handle the main security points. At the same time, we remain responsible just for the code programming details.&lt;/p&gt;

&lt;p&gt;This shallow thinking often leads to too permissive applications, which can cause issues like data loss or unintended access to other's data because of the underuse of the permissions systems provided on the own environment where they run. These security definitions outside the application code make them easier to test and more complicated to break by the code changes required over the software lifecycle.&lt;/p&gt;

&lt;p&gt;The main points to turn these definitions into software development practices are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It requires good team-level knowledge about the security options offered by the selected cloud provider. For instance, Amazon has Cognito as its user identity service and IAM for identity and access management.&lt;/li&gt;
&lt;li&gt;The developers need a clear understanding of the boundaries of authentication and authorization and how they impact access to resources. Complex systems like SaaS applications may become more secure if they can segment the data they handle in different places per tenant instead of single storage relying on system rules. The access to the own data containers becomes tied to the user's related authorization before activating any code-level permission.&lt;/li&gt;
&lt;li&gt;Ensure that automation can reliably evaluate these permissions as part of the continuous integration process, ensuring that the permissions granting and denial are in line with the expected behavior as the codebase evolves.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>secu</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
