{"id":10456,"date":"2019-11-12T06:29:16","date_gmt":"2019-11-12T06:29:16","guid":{"rendered":"https:\/\/www.gmass.co\/blog\/?p=10456"},"modified":"2019-11-18T10:55:53","modified_gmt":"2019-11-18T10:55:53","slug":"lock-down-sql-server-aws","status":"publish","type":"post","link":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/","title":{"rendered":"Lock down SQL Server in AWS (The Poor Man&#8217;s Guide)"},"content":{"rendered":"<p>If you&#8217;re running <strong>SQL Server<\/strong> somewhere in Amazon Web Services (AWS), you&#8217;ve probably heard that it should not have a public-facing IP address. Your SQL Server likely stores your organization&#8217;s most precious data, and you want to protect it like you would your first-born, and that means cutting it off from outside access.<\/p>\n<h3>What happens when you have a public-facing SQL Server?<\/h3>\n<p>In time you will see lots of entries like this in your <strong>Event Application Log<\/strong>:<\/p>\n<p><a href=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k.png\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10533 size-full\" src=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k.png\" alt=\"\" width=\"1196\" height=\"452\" srcset=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k.png 1196w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k-300x113.png 300w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k-768x290.png 768w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k-1024x387.png 1024w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k-24x9.png 24w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k-36x14.png 36w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Event-application-log-SQL-server-1-46k-48x18.png 48w\" sizes=\"auto, (max-width: 1196px) 100vw, 1196px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Even if you disable your &#8220;sa&#8221; account, you&#8217;ll still get hammered with login attempts, but with a slightly different Application Log message:<\/p>\n<p><a href=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k.png\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10528 size-full\" src=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k.png\" alt=\"\" width=\"1204\" height=\"456\" srcset=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k.png 1204w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k-300x114.png 300w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k-768x291.png 768w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k-1024x388.png 1024w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k-24x9.png 24w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k-36x14.png 36w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Login-failure-47k-48x18.png 48w\" sizes=\"auto, (max-width: 1204px) 100vw, 1204px\" \/><\/a><\/p>\n<p>Every SQL Server that&#8217;s publicly accessible on the Internet is eventually subject to a brute force attack on the &#8220;sa&#8221; account. So not only should your SQL Server be protected from the outside Internet, the &#8220;sa&#8221; account should be disabled as well. Disabling the &#8220;sa&#8221; account is <a href=\"https:\/\/www.mssqltips.com\/sqlservertip\/3695\/best-practices-to-secure-the-sql-server-sa-account\/\">easy<\/a>.<\/p>\n<h3>My trick to blocking public access to SQL Server<\/h3>\n<p>Setting up your SQL Server so that it can&#8217;t be accessed by the Internet but <em>can<\/em> be accessed by your web and application servers is trickier, though. Amazon provides an article on <a href=\"https:\/\/docs.aws.amazon.com\/AmazonRDS\/latest\/UserGuide\/USER_VPC.Scenarios.html\">how to do that via multiple VPCs<\/a>, but I&#8217;m a simple man, and I like simple solutions. After testing several scenarios, I arrived at the following plan that adequately protects my SQL Server instance and, incidentally, saves money on my AWS bill.<\/p>\n<p>The trick is to put all of my servers, applications, web, and SQL Servers, in the same <strong>Availability Zone<\/strong>, and then lock down the Availability Zone using a <strong>Network ACL<\/strong> in my <strong>Virtual Private Cloud (VPC)<\/strong>. A simple <strong>DENY<\/strong> rule blocking port 1433 to my VPC accomplishes this. Any servers in the same Availability Zone and subnet will still be able to access port 1433, since the ACL only protects the subnet from anything outside the subnet, not inside.<\/p>\n<p><a href=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k.png\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10529 size-full\" src=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k.png\" alt=\"\" width=\"1152\" height=\"148\" srcset=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k.png 1152w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k-300x39.png 300w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k-768x99.png 768w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k-1024x132.png 1024w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k-24x3.png 24w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k-36x5.png 36w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Deny-rule-7k-48x6.png 48w\" sizes=\"auto, (max-width: 1152px) 100vw, 1152px\" \/><\/a><\/p>\n<p>You&#8217;ll notice that I have an <strong>ALLOW<\/strong> rule for my own IP right above the <strong>DENY<\/strong> rule that blocks all access to port 1433, the standard TCP\/IP port used by SQL Server. This is so that I can still manage my SQL Server from my personal workstation. You might be wondering why you need to bother with the Network ACL, which applies to the entire subnet, rather than just setting <strong>Inbound<\/strong> rules in the <strong>Security Group<\/strong> that holds the <strong>EC2 Instance<\/strong>. The reason is that Security Group rules are only for <strong>ALLOWING<\/strong> port access. You <strong>can&#8217;t put a DENY rule in a Security Group<\/strong>, but you can in a Network ACL.<\/p>\n<h3>Save money on your AWS bill<\/h3>\n<p>The added benefit of having all of your servers in the same Availability Zone is that you <a href=\"https:\/\/datapath.io\/resources\/blog\/what-are-aws-data-transfer-costs-and-how-to-minimize-them\/\">don&#8217;t pay for bandwidth between your servers<\/a>. If your servers are across <em>different<\/em> Availability Zones, then you pay $.01\/GB transfer. For me, that portion of my data transfer alone has been racking up $250\/month in fees recently. Actually, there are <a href=\"https:\/\/forums.aws.amazon.com\/message.jspa?messageID=326076\">two conditions<\/a> necessary for avoiding data transfer fees between your instances: 1) They must be in the <strong>same AZ<\/strong>; 2) They must <strong>communicate with each other via their private IP address<\/strong>, not a public IP address.<\/p>\n<p>It&#8217;s important to note that I host my own SQL Server on an EC2 Windows instance. I don&#8217;t use RDS, but the same concepts I&#8217;m using here should also apply if your SQL Server lives on an RDS endpoint. I considered RDS but decided against it because I&#8217;m a power <strong>SQLAgent<\/strong> user, and SQLAgent has <a href=\"https:\/\/docs.aws.amazon.com\/AmazonRDS\/latest\/UserGuide\/Appendix.SQLServer.CommonDBATasks.Agent.html\">restricted capabilities<\/a> in RDS.<\/p>\n<p>You might argue that putting all of your servers in the same Availability Zone is silly since the whole point of multiple AZs is to allow for redundancy in case one zone goes offline. You&#8217;d be right, but if a poor man&#8217;s solution to locking down your SQL Server appeals to you in the first place, I&#8217;m betting you&#8217;re not worried about redundancy across Availability Zones. In my 4+ years of hosting with AWS, not one of my Availability Zones has ever gone down.<\/p>\n<h3>Moving my servers into the same Availability Zone<\/h3>\n<p>To get this setup working, I had to consolidate all my servers into one Availability Zone, which was tricky because my servers were across three of them, <strong>us-west-2a<\/strong>, <strong>us-west-2b<\/strong>, and <strong>us-west-2c<\/strong>. To make matters worse, my SQL Server was on us-west-2c while most of my application and web servers were in us-west-2a. I had a choice to make: <strong>switch my SQL Server<\/strong> to us-west-2a OR <strong>switch the rest of my servers<\/strong> to us-west-2c. Because <a href=\"https:\/\/aws.amazon.com\/premiumsupport\/knowledge-center\/move-ec2-instance\/\">changing Availability Zones<\/a> results in <strong>instance downtime <\/strong>since you have to stop and re-start the instance, and because taking down my SQL Server brings down my entire system, I opted to switch the rest of my servers to us-west-2c, which I could do in batches to prevent a disruption in customer&#8217;s email campaigns.<\/p>\n<p>Lastly, to avail myself of the cost savings by having all servers in the same AZ, the servers must also communicate with each other by their private IP, not by their public IP. This makes sense, because if all of your application servers are hitting your SQL Server by its public IP, then the traffic is first leaving your AZ and then coming back in via a public routing. If, however, you connect by a private IP, then your traffic stays inside your subnet and AZ.<\/p>\n<p>I had two options to change easily from public IP access to private IP access of the SQL box: change the DNS entry for <strong>database.gmass.co<\/strong>, or put in a &#8220;hosts&#8221; entry into all my application servers, hard-coding database.gmass.co to the private IP address so that it resolves to the private IP rather than the public IP from the Internet&#8217;s DNS system. The TTL on database.gmass.co was low enough that I just changed the IP address of database.gmass.co from the public-facing IP on the SQL Server to its private IP. Plus, this way, if I ever set up a new server, I won&#8217;t have to remember to put in that &#8220;hosts&#8221; file entry.<\/p>\n<p>So now, while my SQL Server still has a public-facing IP address, it&#8217;s impossible to know what that IP address is. Furthermore, if someone did figure out that public IP, they&#8217;d be <strong>stopped in their tracks<\/strong> from accessing the server because between the <strong>Network ACL<\/strong>, which protects the whole AZ, and the <strong>Security Group&#8217;s Inbound Rules<\/strong> that protect the individual instance, no inbound access is allowed. Even Remote Desktop (RDP) access is allowed only from my personal workstation.<\/p>\n<p>To lock down the SQL Server even further, the EC2 Security Group allows only outbound access over port 25 so that the server can send email notifications to me about certain events, such as a BACKUP success or failure.<\/p>\n<p><a href=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k.png\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10536 size-full\" src=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k.png\" alt=\"\" width=\"1168\" height=\"332\" srcset=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k.png 1168w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k-300x85.png 300w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k-768x218.png 768w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k-1024x291.png 1024w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k-24x7.png 24w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k-36x10.png 36w, https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Outbound-access-1-17k-48x14.png 48w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><em>Note: By the way, database.gmass.co isn&#8217;t the real domain name for my SQL Server.<\/em><\/p>\n<h3>Don&#8217;t like this approach?<\/h3>\n<p>If you&#8217;re an enterprise user and don&#8217;t want a &#8220;hacky&#8221; solution to securing something as important as your SQL Server, see AWS&#8217;s <a href=\"https:\/\/d1.awsstatic.com\/whitepapers\/best-practices-for-deploying-microsoft-sql-server-on-aws.pdf\">Best Practices Guide to SQL Server deployment<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you&#8217;re running SQL Server somewhere in Amazon Web Services (AWS), you&#8217;ve probably heard that it should not have a public-facing IP address. Your SQL Server likely stores\u2026<\/p>\n","protected":false},"author":2,"featured_media":10523,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6120],"tags":[],"class_list":["post-10456","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>Lock down SQL Server in AWS (The Poor Man&#039;s Guide)<\/title>\r\n<meta name=\"description\" content=\"You&#039;ve been told that you shouldn&#039;t have your production SQL Server on a public IP address. This is how to do that EASILY in AWS.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Lock down SQL Server in AWS (The Poor Man&#039;s Guide)\" \/>\r\n<meta property=\"og:description\" content=\"You&#039;ve been told that you shouldn&#039;t have your production SQL Server on a public IP address. This is how to do that EASILY in AWS.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/\" \/>\r\n<meta property=\"og:site_name\" content=\"GMass Blog\" \/>\r\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/GmailMailMerge\/\" \/>\r\n<meta property=\"article:published_time\" content=\"2019-11-12T06:29:16+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2019-11-18T10:55:53+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Lock-down-SQL-server-49k.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1001\" \/>\r\n\t<meta property=\"og:image:height\" content=\"467\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"Ajay Goel\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@PartTimeSnob\" \/>\r\n<meta name=\"twitter:site\" content=\"@GMassForGmail\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ajay Goel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/\"},\"author\":{\"name\":\"Ajay Goel\",\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/#\\\/schema\\\/person\\\/b5fa74f8765b860701158fd77162fff8\"},\"headline\":\"Lock down SQL Server in AWS (The Poor Man&#8217;s Guide)\",\"datePublished\":\"2019-11-12T06:29:16+00:00\",\"dateModified\":\"2019-11-18T10:55:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/\"},\"wordCount\":1213,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/Lock-down-SQL-server-49k.png\",\"articleSection\":[\"AWS\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/\",\"url\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/\",\"name\":\"Lock down SQL Server in AWS (The Poor Man's Guide)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/Lock-down-SQL-server-49k.png\",\"datePublished\":\"2019-11-12T06:29:16+00:00\",\"dateModified\":\"2019-11-18T10:55:53+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/#\\\/schema\\\/person\\\/b5fa74f8765b860701158fd77162fff8\"},\"description\":\"You've been told that you shouldn't have your production SQL Server on a public IP address. This is how to do that EASILY in AWS.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/Lock-down-SQL-server-49k.png\",\"contentUrl\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/Lock-down-SQL-server-49k.png\",\"width\":1001,\"height\":467},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/lock-down-sql-server-aws\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lock down SQL Server in AWS (The Poor Man&#8217;s Guide)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/\",\"name\":\"GMass Blog\",\"description\":\"Tips and tricks for sending mail merge and mass email campaigns directly from Gmail\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/#\\\/schema\\\/person\\\/b5fa74f8765b860701158fd77162fff8\",\"name\":\"Ajay Goel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f3a70af05bbabe47925150d5a1320540e801b78055a74da20658fc97cd0706a2?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f3a70af05bbabe47925150d5a1320540e801b78055a74da20658fc97cd0706a2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f3a70af05bbabe47925150d5a1320540e801b78055a74da20658fc97cd0706a2?s=96&d=mm&r=g\",\"caption\":\"Ajay Goel\"},\"description\":\"Ajay is the founder of GMass and has been developing email sending software for 20 years.\",\"sameAs\":[\"https:\\\/\\\/twitter.com\\\/PartTimeSnob\",\"https:\\\/\\\/x.com\\\/PartTimeSnob\"],\"url\":\"https:\\\/\\\/www.gmass.co\\\/blog\\\/author\\\/ajay-goel\\\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Lock down SQL Server in AWS (The Poor Man's Guide)","description":"You've been told that you shouldn't have your production SQL Server on a public IP address. This is how to do that EASILY in AWS.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/","og_locale":"en_US","og_type":"article","og_title":"Lock down SQL Server in AWS (The Poor Man's Guide)","og_description":"You've been told that you shouldn't have your production SQL Server on a public IP address. This is how to do that EASILY in AWS.","og_url":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/","og_site_name":"GMass Blog","article_publisher":"https:\/\/www.facebook.com\/GmailMailMerge\/","article_published_time":"2019-11-12T06:29:16+00:00","article_modified_time":"2019-11-18T10:55:53+00:00","og_image":[{"width":1001,"height":467,"url":"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Lock-down-SQL-server-49k.png","type":"image\/png"}],"author":"Ajay Goel","twitter_card":"summary_large_image","twitter_creator":"@PartTimeSnob","twitter_site":"@GMassForGmail","twitter_misc":{"Written by":"Ajay Goel","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/#article","isPartOf":{"@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/"},"author":{"name":"Ajay Goel","@id":"https:\/\/www.gmass.co\/blog\/#\/schema\/person\/b5fa74f8765b860701158fd77162fff8"},"headline":"Lock down SQL Server in AWS (The Poor Man&#8217;s Guide)","datePublished":"2019-11-12T06:29:16+00:00","dateModified":"2019-11-18T10:55:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/"},"wordCount":1213,"commentCount":0,"image":{"@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/#primaryimage"},"thumbnailUrl":"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Lock-down-SQL-server-49k.png","articleSection":["AWS"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/","url":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/","name":"Lock down SQL Server in AWS (The Poor Man's Guide)","isPartOf":{"@id":"https:\/\/www.gmass.co\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/#primaryimage"},"image":{"@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/#primaryimage"},"thumbnailUrl":"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Lock-down-SQL-server-49k.png","datePublished":"2019-11-12T06:29:16+00:00","dateModified":"2019-11-18T10:55:53+00:00","author":{"@id":"https:\/\/www.gmass.co\/blog\/#\/schema\/person\/b5fa74f8765b860701158fd77162fff8"},"description":"You've been told that you shouldn't have your production SQL Server on a public IP address. This is how to do that EASILY in AWS.","breadcrumb":{"@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/#primaryimage","url":"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Lock-down-SQL-server-49k.png","contentUrl":"https:\/\/www.gmass.co\/blog\/wp-content\/uploads\/2019\/11\/Lock-down-SQL-server-49k.png","width":1001,"height":467},{"@type":"BreadcrumbList","@id":"https:\/\/www.gmass.co\/blog\/lock-down-sql-server-aws\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.gmass.co\/blog\/"},{"@type":"ListItem","position":2,"name":"Lock down SQL Server in AWS (The Poor Man&#8217;s Guide)"}]},{"@type":"WebSite","@id":"https:\/\/www.gmass.co\/blog\/#website","url":"https:\/\/www.gmass.co\/blog\/","name":"GMass Blog","description":"Tips and tricks for sending mail merge and mass email campaigns directly from Gmail","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.gmass.co\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.gmass.co\/blog\/#\/schema\/person\/b5fa74f8765b860701158fd77162fff8","name":"Ajay Goel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f3a70af05bbabe47925150d5a1320540e801b78055a74da20658fc97cd0706a2?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f3a70af05bbabe47925150d5a1320540e801b78055a74da20658fc97cd0706a2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f3a70af05bbabe47925150d5a1320540e801b78055a74da20658fc97cd0706a2?s=96&d=mm&r=g","caption":"Ajay Goel"},"description":"Ajay is the founder of GMass and has been developing email sending software for 20 years.","sameAs":["https:\/\/twitter.com\/PartTimeSnob","https:\/\/x.com\/PartTimeSnob"],"url":"https:\/\/www.gmass.co\/blog\/author\/ajay-goel\/"}]}},"_links":{"self":[{"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/posts\/10456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/comments?post=10456"}],"version-history":[{"count":24,"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/posts\/10456\/revisions"}],"predecessor-version":[{"id":10537,"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/posts\/10456\/revisions\/10537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/media\/10523"}],"wp:attachment":[{"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/media?parent=10456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/categories?post=10456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gmass.co\/blog\/wp-json\/wp\/v2\/tags?post=10456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}