<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://www.gamare.net/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.gamare.net/" rel="alternate" type="text/html" /><updated>2026-08-31T16:56:04+00:00</updated><id>https://www.gamare.net/feed.xml</id><title type="html">Sam’s Thoughts</title><entry><title type="html">Application Secrets Management</title><link href="https://www.gamare.net/blog/2020/08/04/application-secrets-management/" rel="alternate" type="text/html" title="Application Secrets Management" /><published>2020-08-03T20:13:57+00:00</published><updated>2020-08-03T20:13:57+00:00</updated><id>https://www.gamare.net/blog/2020/08/04/application-secrets-management</id><content type="html" xml:base="https://www.gamare.net/blog/2020/08/04/application-secrets-management/"><![CDATA[<div class="header-image-wrapper">
  <img src="/assets/images/application-secrets.png" alt="Ducks" width="90%" />
</div>
<p><br /></p>

<p>The aim of this article is to discuss the need to secure your application secrets / credentials, understand possible solutions and how to move towards an implementation.</p>

<h3 id="what-is-a-secret"><strong>What is a secret?</strong></h3>

<p>In the context of a typical application, secrets may include API tokens, certificates, local accounts, SSH keys, Git Tokens, Cloud credentials, database connection strings and domain or non-domain service accounts. Typically, such secrets are static in nature (change infrequently).</p>

<h3 id="why-is-it-important-to-safeguard-your-secrets"><strong>Why is it important to safeguard your secrets?</strong></h3>

<p>All of us understand that our applications are made available to accomplish a business objective. That business objective in most cases has a monetary impact to the company. A compromised secret can at a minimum can cause the application to be unavailable. If the malicious entity has other nefarious motives, they can potentially delete your data, modify your data or even encrypt it has ask for ransom (ransomware). This invalidates the trust with your end users and may have long term effect towards your company’s credibility as a trusted secure provider of one or more services.</p>

<p>Bottom line its critical to ensure your secret is always well protected, and accessible only to the applications that need access based on strong ACLs, which are periodically validated.</p>

<h3 id="problem-statement"><strong>Problem statement</strong></h3>

<p>Applications provide service to a set of end users. Typically, a given application is part of a larger ecosystem where they need to interact with other services and databases. Historically secrets needed to connect to the other services and databases have been stored using several different mechanisms like config files within code, in version-controlled repo like GIT/TFS, in initialization time parameters, and/or in external files or databases. Most enterprises will experience the notion of “Secrets Sprawl” where secrets have sprawled all over the place with different access mechanisms. Without a consistent access control mechanism, and audit logging (who accessed the secrets when), and a streamlined location for the secrets to reside, this is a problem. These issues need to be resolved at the core, and the secrets need to be encrypted during transmission and at rest.</p>

<p>In today’s day of DevOps, Application Secrets Management is intertwined with automation at the core and is required to manage these secrets in several phases of a typical application’s lifecycle.</p>

<h3 id="typical-use-cases"><strong>Typical Use Cases</strong></h3>

<figure class="wp-block-image size-large">![Application Secrets Management - Use Cases](https://www.gamare.net/wp-content/uploads/2020/08/ApplicationSecretsManagement-UseCases-1024x586.jpg)</figure>
<ul>
  <li>Ad-hoc access for Application Administrators via a browser</li>
  <li>Deployment-Time: When application is deployed, it may need credentials for the target platform.</li>
  <li>Run-time: When application needs to get secrets/credentials to access other services like Databases, Queues, and Any-Sub-Systems at run-time, the application will need the ability to retrieve secrets and use them.</li>
</ul>

<div class="header-image-wrapper">
  <img src="/assets/images/ApplicationSecretsManagement-UseCases.jpg" alt="Application Secrets Pattern" width="90%" />
</div>
<p><br /></p>

<h3 id="desired-traits"><strong>Desired Traits</strong></h3>

<ul>
  <li>Secrets should be encrypted at rest and in transit</li>
  <li>Secrets should be segregated by domain or application in a multi-tenant scenario</li>
  <li>Secrets should be accessible through policies. Policies should be mapped to one or more sets of access channels. These could be groups in LDAP, or specific tokens that have access to that set of policies and effectively the underlying data.</li>
  <li>Support integrated or native capability to retrieve secrets. Example: when using platforms like Kubernetes, and PCF</li>
  <li>Support an API based model to store and retrieve secrets.</li>
  <li>Scalable</li>
  <li>High Availability</li>
  <li>Resilient to Failures</li>
  <li>Disaster Recovery</li>
  <li>Audit Tracking</li>
  <li>Monitoring KPI’s</li>
</ul>

<h3 id="possible-solutions"><strong>Possible Solutions</strong></h3>

<p>There are several solutions that can help you achieve your goals, depending on the complexity of your application ecosystem.</p>

<p><a href="https://aws.amazon.com/secrets-manager/">AWS Secrets Manager</a></p>

<p>AWS Secrets Manager helps you protect secrets needed to access your applications, services, and IT resources. The service enables you to easily rotate, manage, and retrieve database credentials, API keys, and other secrets throughout their lifecycle. Users and applications retrieve secrets with a call to Secrets Manager APIs, eliminating the need to hardcode sensitive information in plain text. Secrets Manager offers secret rotation with built-in integration for Amazon RDS, Amazon Redshift, and Amazon DocumentDB. Also, the service is extensible to other types of secrets, including API keys and OAuth tokens. In addition, Secrets Manager enables you to control access to secrets using fine-grained permissions and audit secret rotation centrally for resources in the AWS Cloud, third-party services, and on-premises</p>

<p><a href="https://azure.microsoft.com/en-us/services/key-vault/">Azure Key Vault</a></p>

<p>Secure key management is essential to protect data in the cloud. Use Azure Key Vault to encrypt keys and small secrets like passwords that use keys stored in hardware security modules (HSMs). For more assurance, import or generate keys in HSMs, and Microsoft processes your keys in FIPS 140-2 Level 2 validated HSMs (hardware and firmware). With Key Vault, Microsoft doesn’t see or extract your keys. Monitor and audit your key use with Azure logging—pipe logs into Azure HDInsight or your security information and event management (SIEM) solution for more analysis and threat detection</p>

<p><a href="https://cloud.google.com/solutions/secrets-management/">Google Secrets Management</a></p>

<p>Improve security with secrets management and principles of least privilege. Plus, you can encrypt, store, secure, and manage secrets on Google Cloud with the tools you already know.</p>

<p><a href="https://www.vaultproject.io/">Hashicorp Vault</a></p>

<p>Secure, store and tightly control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API.</p>

<h3 id="how-would-you-choose"><strong>How would you choose?</strong></h3>

<p>The answer is “it depends on your use cases”. Here are few ways to think about it.</p>

<ul>
  <li>If you are a company with no previous baggage, and you are hosted strictly on one of the cloud providers, you may choose to leverage <a href="https://aws.amazon.com/secrets-manager/">AWS Secrets Manager</a> / <a href="https://azure.microsoft.com/en-us/services/key-vault/">Azure Key Vault</a> / <a href="https://cloud.google.com/solutions/secrets-management/">Google Secrets Management</a> within that cloud platform provider. The advantages of using Vault-As-A-Service (VaaS) makes it very easy to setup and start using it. You pay for what you use and nothing more.</li>
  <li>If you are a company with hybrid footprint of on-premises data center and also hosted on the cloud, you may still choose to use the cloud services <a href="https://aws.amazon.com/secrets-manager/">AWS Secrets Manager</a> / <a href="https://azure.microsoft.com/en-us/services/key-vault/">Azure Key Vault</a> / <a href="https://cloud.google.com/solutions/secrets-management/">Google Secrets Management</a> for quick and easy setup and also take advantage of pay-for-what-you-use model.</li>
  <li>If you want to have 100% residency of your secrets on-premises or your corporate security policies mandate that all your secrets should reside on-premises, then you may consider leveraging a solution like Hashicorp Vault. It is also possible to host Hashicorp Vault as a service within AWS and Azure, leveraging pre-configured images, licensed through the online marketplace, or installed by you in its entirety.</li>
</ul>

<p>With standard public cloud solutions you get instantly usable, globally scalable, resilient, and disaster recovery features out-of the-box. However if you need on-premises implementation, you have some work ahead of you to accomplish the same instantly usable, globally scalable, resilient, and disaster recovery characteristics.</p>

<p>Selecting the products/services is just part of the story. You must change your processes, tools, code, and support services to ensure secrets are always stored and retrieved using Vault with appropriate security controls in place.</p>

<h3 id="conclusion"><strong>Conclusion</strong></h3>

<p>There are several good solutions to choose from, with effort on your part to protect your secrets. Implementing “Application Secret Management” is an important step towards improving your applications security posture.</p>

<p><strong>Disclaimer:</strong> I have setup and used <a href="https://azure.microsoft.com/en-us/services/key-vault/">Azure Key Vault, <u>AWS Secrets Manager</u>, and <u>Hashicorp Vault</u> </a> products and am comfortable using these. Each product has its pros and cons, but they were all good enough for my use cases. I tend to gravitate towards fully scalable pay-as-you-go cloud model.</p>]]></content><author><name>Sam Gamare</name></author><category term="Access Control" /><category term="ACL" /><category term="AWS" /><category term="AWS Secrets Manager" /><category term="Azure" /><category term="Azure Key Vault" /><category term="Credentials" /><category term="Encryption" /><category term="Enterprise Applications" /><category term="GCP" /><category term="Google Secrets Management" /><category term="Hashicorp" /><category term="Hashicorp Vault" /><category term="Secrets" /><category term="Security" /><summary type="html"><![CDATA[Protect your application secrets and credentials from misuse by implementing a Vault solution, tailored to your use case.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.gamare.net/assets/images/icons/icon-application-secrets-management.svg" /><media:content medium="image" url="https://www.gamare.net/assets/images/icons/icon-application-secrets-management.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Agile/Scrum for onshore/offshore hybrid model – Part II</title><link href="https://www.gamare.net/blog/2010/09/02/agile-scrum-for-onshore-offshore-hybrid-model-part-ii/" rel="alternate" type="text/html" title="Agile/Scrum for onshore/offshore hybrid model – Part II" /><published>2010-09-02T14:41:00+00:00</published><updated>2010-09-02T14:41:00+00:00</updated><id>https://www.gamare.net/blog/2010/09/02/agile-scrum-for-onshore-offshore-hybrid-model-part-ii</id><content type="html" xml:base="https://www.gamare.net/blog/2010/09/02/agile-scrum-for-onshore-offshore-hybrid-model-part-ii/"><![CDATA[<div class="header-image-wrapper">
  <img src="/assets/images/agile-global-teams.png" alt="Agile Global Teams" width="90%" />
</div>
<p><br /></p>

<p>Continued from <a href="/blog/2010/09/01/agile-scrum-for-onshore-offshore-hybrid-model-part-i/">Agile/Scrum for onshore/offshore hybrid model – Part I</a></p>

<p>In the previous article we discussed about Roles, Meetings, Processes, and Tools to use in our hybrid model. In this article we will briefly go over the do’s and don’ts that will get us moving in the RIGHT direction.</p>

<p><strong>Do’s</strong></p>

<p>• Offshore Scrum Master can be a traditional PM, but has to have a “Servant leader and Facilitator” mindset.</p>

<p>• For a new Scrum team, it is important to understand the ramp up time for resources, and various environment setup and continuous integration setup – before 1st Dev Sprint begins.</p>

<p>• Automated Continuous Integration (CruiseControl/Hudson + SVN/CVS + Maven Integration).</p>

<p>• Automated Testing, possibly including load testing if feasible.</p>

<p>• Access to Product Owner (or a proxy at least) is very important to the Delivery Team’s success.</p>

<p>• Measure each teams velocity after each sprint and identify positives and negatives to ripple to other teams. This ensures that we can carry best practices from productive teams to other teams, while is also ensures the “slower” team gets positive feedback to do the right things to increase productivity.</p>

<p>• Bugs are not to be automatically fixed in the following sprint, rather they should be prioritized to the appropriate future Sprint.</p>

<p>• Scrum Teams should be grouped/assembled on high level functionality (group of closely related features).</p>

<p>• Following Agile/Scrum does not excuse us from documentation, rather the documentation happens iteratively over multiple sprints.</p>

<p>• Co-mingling: Ideally Agile/Scrum prefers co-location, however in today’s day and age that may not always be feasible. It is useful to consider sending the US lead to India and vice versa. The comfort and understanding within the team it achieves is worth the plane ticket in matter of few weeks.</p>

<p>• Define backlog feature items with the following attributes:</p>

<p>o Mandatory Items: Description, Rank/Priority, Complexity/Cost/Size (Story Points).</p>

<p>o Preferred Items: Acceptance Criteria (including NFR’s), Owner, Parent Item, Tests, Dependencies</p>

<p><strong>Don’ts</strong></p>

<p>• Passive agreements on either side should be taken note of and cross confirmations raised.</p>

<p>• Don’t assume requirements available as defined in feature backlog are complete. Its paradoxical in that sense but a feature should not be picked up for development if it is not considered well defined.</p>

<p>• A unfocused scrum team is recipe for disaster or lower output.</p>

<p>• It is probably worth documenting that moving code from Dev to Integration to QA to Staging does not generally happen within one sprint, and unless we have a very well established testing and development environment such a automated move is not advised.</p>

<p>Some of my colleagues have asked me about questions that most fit questions and answer kind of blog. Please stay tuned for the next one of this series.</p>]]></content><author><name>Sam Gamare</name></author><category term="Agile" /><category term="Backlog" /><category term="OffShore" /><category term="OnShore" /><category term="Planning Poker" /><category term="Scrum" /><category term="Sprint" /><category term="Story" /><summary type="html"><![CDATA[Do's and Don't s for Agile / Scrum teams for what works with respect to roles, meetings, processes and tools.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.gamare.net/assets/images/icons/icon-agile-part-ii.svg" /><media:content medium="image" url="https://www.gamare.net/assets/images/icons/icon-agile-part-ii.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Agile/Scrum for onshore/offshore hybrid model – Part I</title><link href="https://www.gamare.net/blog/2010/09/01/agile-scrum-for-onshore-offshore-hybrid-model-part-i/" rel="alternate" type="text/html" title="Agile/Scrum for onshore/offshore hybrid model – Part I" /><published>2010-09-01T14:39:00+00:00</published><updated>2010-09-01T14:39:00+00:00</updated><id>https://www.gamare.net/blog/2010/09/01/agile-scrum-for-onshore-offshore-hybrid-model-part-i</id><content type="html" xml:base="https://www.gamare.net/blog/2010/09/01/agile-scrum-for-onshore-offshore-hybrid-model-part-i/"><![CDATA[<div class="header-image-wrapper">
  <img src="/assets/images/agile-global-teams.png" alt="Agile Global Teams" width="90%" />
</div>
<p><br /></p>

<hr />

<p>1. What are the various methods to following Agile programming?</p>

<p>a. Extreme Programming</p>

<p>b. Scrum</p>

<p>c. DSDM</p>

<p>d. FDD</p>

<p>e. Crystal Clear</p>

<p>2. What is the fundamental difference between Traditional Waterfall model vs. Agile?</p>

<p>a. Water fall is plan driven while Agile is value driven.</p>

<p>b. Agile works best with a fixed team taking uncertainty as an acceptable model and does not try to estimate too far into the future.</p>

<p>c. Traditional waterfall works best when long terms risks need to be understood upfront.</p>

<p>3. Is there something like a hybrid mode which takes the best from Waterfall and Agile?</p>

<p>a. Officially there is nothing published, but lot of companies continue to plan a long term plan using traditional planning with smaller projects and features implemented through an agile/scrum approach.</p>

<p>4. What are the core tenants of Scrum?</p>

<p>a. Co-location</p>

<p>b. Scrum values: Commitment, Focus, Openness, Respect and Courage.</p>

<p>5. Do you wonder who invented Scrum?</p>

<p>a. Credit has been given to Jeff Sutherland, and Ken Schwaber first used during 1993</p>

<p>b. Also mentioned credits go to Hirotaka Takeuchi and Ikojuri Nonaka since “Harvard Business Review in Jan 1986.</p>

<p>6. What are the two types of backlogs we refer to ?</p>

<p>a. Product Backlog – Prioritized, fairly well documented features</p>

<p>b. Sprint Backlog – Product backlog items assigned to a sprint. It is noteworthy to mention that tasks are action details that stem from a backlog item within a sprint.</p>

<p>7. What are the 3 roles in Scrum?</p>

<p>a. Product Owner</p>

<p>b. Scrum Master</p>

<p>c. Delivery Team</p>

<p>8. What is velocity?</p>

<p>a. If you are a physics buff, you might think “velocity is the rate of change of displacement”. Sticking to Scrum, velocity measures how many function points worth of development can a scrum team process per sprint.</p>

<p>9. How do we write a simple use case?</p>

<p>a. The best way to write a use case is to concentrate on the business use case, without any technology affiliations. Example: As a buyer I would like to search for a item based on manufacturers model number, from selected set of manufacturers, so I can find specific items I am interested in to consider buying those.</p>

<p>b. It is useful to add other items to this use case like various acceptance criteria: Example: The system should provide the results within 1 sec, and search arguments and search results should be provided in the same screen.</p>

<p>10. What is story points?</p>

<p>a. Story points is the estimation exercise where the team estimates how big the feature is from a complexity perspective. It is important to note that story points are relative. So a team could potentially estimate higher or lower points for a given story. It is an evolving exercise that is expected to get better as we progress through sprints.</p>

<p>11. What is Planning Poker?</p>

<p>a. Planning Poker is a known technique where the scrum team estimates each story, sometimes iteratively till they agree to the complexity. The purpose is also to challenge and clear assumptions about a given feature.</p>

<p>12. What is abnormal Sprint Termination?</p>

<p>a. A abnormal termination generally signifies inefficient or lack of Sprint Planning sessions. Sprint can be abnormally terminated based on several factors like:</p>

<p>i. Team unable to meet the goal due to outside circumstances</p>

<p>ii. Management cancelled the sprint due to business reasons outside the team.</p>

<p>13. How do we track progress?</p>

<p>a. Tracking typically uses “Burn Down” charts which is a direct graph of features outstanding vs. time available.</p>

<p>14. How can velocity help us?</p>

<p>a. Velocity metrics from past sprints can help the team identify if a given feature can be finished within a standard sprint.</p>

<p>15. What is Sprint retrospective?</p>

<p>a. It is a meeting of the delivery team members including the Scrum master, ideally without the Product owner. The team discuses things that went wrong, that could be improved, make product backlog items, and inspection of processes.</p>

<p>16. Where does Automate Build stand in Agile Scrum model ?</p>

<p>a. Automated Build or Continuous Integration is a recommended model so ensure that code is compiled on a regular basis. This supports shorter development cycles typically followed with Scrum.</p>

<p>17. What does Automated Testing mean?</p>

<p>a. Automated Testing goes hand in hand with Continuous Integration model to ensure that code gets tested automatically as part of automated build. Product teams go to the extreme of running full blown stress tests for every build to ensure the release can stand up.</p>

<p>18. What do we mean by Agile Refactoring?</p>

<p>a. Refactoring is the process of clarifying and simplifying the design of existing code, without changing its behavior. One of the results of Agile methodology is it causes some amount of rework from an architecture standpoint and brings up refactoring of code tied to the same or similar features. If left unaddressed it causes “code rot”. It is very important to clean up through every sprint to ensure code is refactored.</p>

<p>19. Do traditional project managers have a role ?</p>

<p>a. Absolutely yes – Interestingly the basic art of managing a project is still very important and a experienced project manager who understands scrum (delegating into becoming a servant master) is definitely very valuable to a project</p>

<p>Follow the next blog at <a href="https://www.gamare.net/blog/2010/09/02/agile-scrum-for-onshore-offshore-hybrid-model-part-ii/">Agile/Scrum for onshore/offshore hybrid model – Part II</a></p>]]></content><author><name>Sam Gamare</name></author><category term="Uncategorized" /><category term="Agile" /><category term="Backlog" /><category term="OffShore" /><category term="OnShore" /><category term="Planning Poker" /><category term="Scrum" /><category term="Sprint" /><category term="Story" /><summary type="html"><![CDATA[Agile / Scrum patterns for a world where onshore/offshore teams exist, with a quiz style information leaflets about the world of Agile]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.gamare.net/assets/images/icons/icon-agile-part-i.svg" /><media:content medium="image" url="https://www.gamare.net/assets/images/icons/icon-agile-part-i.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Enterprise Security – Part IV – Web Application Security</title><link href="https://www.gamare.net/blog/2010/01/25/enterprise-security-part-iv/" rel="alternate" type="text/html" title="Enterprise Security – Part IV – Web Application Security" /><published>2010-01-25T13:04:00+00:00</published><updated>2010-01-25T13:04:00+00:00</updated><id>https://www.gamare.net/blog/2010/01/25/enterprise-security-part-iv</id><content type="html" xml:base="https://www.gamare.net/blog/2010/01/25/enterprise-security-part-iv/"><![CDATA[<div class="header-image-wrapper">
  <img src="/assets/images/enterprise-security.png" alt="Enterprise Security" width="90%" />
</div>
<p><br /></p>

<hr />

<p>Continued from previous blog <a href="/blog/2009/11/17/enterprise-security-part-iii/">Enterprise Security – Part III – Validate the client (with certs)</a></p>

<p>One of the core requirements for any financial application is to ensure that the code can stand up to abuse from potential hackers. If not hackers, even the plain old script kiddies who just want to play with you need to be kept at bay.</p>

<p>So what are the different aspects we should watch for and how can we solve those. Some of the many to consider are:</p>

<p><strong>1. SQL Injection – User input field validation</strong>.</p>

<p>A user input field can quickly and easily be abused to make your application validate a invalid user to returning your customer list to that hacker. Using special characters a input field can be manipulated such that the underlying code when executed would return something you did not expect.</p>

<p>Example: In a search for products on sale, the customer types in part of the product name. In the backend the code applies that value and constructs a dynamic query to lookup those products. A con user could trick the system into returning products which are not yet active.</p>

<p>Normal search for product name like “cotton candy”</p>

<p>SELECT * FROM product_table WHERE ProductName like ‘%cotton candy’ AND product_launch_date &gt; GetDate()</p>

<p>Devious search to obtain other products inserts search for cotton candy with special single quotes AND 1=1</p>

<p>which effectively could become</p>

<p>SELECT * FROM product_table WHERE ProductName like ‘%cotton candy’ AND 1=1 AND product_launch_date &gt; GetDate()</p>

<p><strong>Fix:</strong></p>

<p>The fix to this is possible with security conscious approach.</p>

<p>1. Instead of passing bare strings to fit dynamic SQL, pass these as bind variables through stored procedures.</p>

<p>2. Ensure every piece of data is valid from a data type and length perspective.</p>

<p>3. Strip the data of any invalid characters before passing to the database layer.</p>

<p><strong>2. Cross Site Scripting</strong></p>

<p>This is a sophisticated form of attack where the malicious user injects code into your web page by passing arguments which may change the way the page is displayed back to the browser and initiated abnormal processing on the server side.</p>

<p>The manipulated URL (which may be hex coded to) may be sent to a innocent user and when he/she clicks it the details of that user’s credentials could be posted to another location as the malicious script executes on the actual financial application.</p>

<p>There are tons of tools on the market that would do these automated checks for you during development and even run silent checks on production systems – but nothing beats the right coding design, standards and practices.</p>

<p>Please review the series with :</p>

<p>– <a href="/blog/2009/03/27/enterprise-security-part-0/">Enterprise Security</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-i/">Login Validation</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-ii/">Validate the server</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-iii/">Validate the client</a></p>

<p>– <a href="/blog/2010/01/25/enterprise-security-part-iv/">Web Application Security</a></p>]]></content><author><name>Sam Gamare</name></author><category term="Applications" /><category term="Attack" /><category term="DAST" /><category term="Database" /><category term="DDoS" /><category term="Encryption Encrypted Communication Security" /><category term="Enterprise Applications" /><category term="File System" /><category term="Firewall" /><category term="OS" /><category term="Port Scanning" /><category term="Security" /><category term="Session Hijacking" /><category term="Social Engineering" /><category term="SQL Injection" /><category term="SSO" /><category term="User Access" /><category term="Web Application Firewall" /><summary type="html"><![CDATA[In this series of application design and security, protecting our applications for malicious attacks.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-iv.svg" /><media:content medium="image" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-iv.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Enterprise Security – Part II – Validate the server</title><link href="https://www.gamare.net/blog/2009/11/17/enterprise-security-part-ii/" rel="alternate" type="text/html" title="Enterprise Security – Part II – Validate the server" /><published>2009-11-17T13:02:00+00:00</published><updated>2009-11-17T13:02:00+00:00</updated><id>https://www.gamare.net/blog/2009/11/17/enterprise-security-part-ii</id><content type="html" xml:base="https://www.gamare.net/blog/2009/11/17/enterprise-security-part-ii/"><![CDATA[<div class="header-image-wrapper">
  <img src="/assets/images/enterprise-security.png" alt="Enterprise Security" width="90%" />
</div>
<p><br /></p>

<hr />

<p>Continued from previous blog <a href="/blog/2009/11/17/enterprise-security-part-i/">Enterprise Security – Part I – Login Validation</a></p>

<p>Certificates are used for a variety of implementations to secure communication from any non intended third party. In this case we are discussing the most generic of the certificates commonly known – server based SSL (secure socket layer) certificate. The purpose of the certificate is to prove beyond doubt that the server is who we think it is. This kind of security is generally setup to work on a security port – usually tied to port 443 (note – it does not have to be) and supported by the browser as “https”; an extension to the standard http protocol.</p>

<p>When a request is initiated for a secure https based website, the website responds with a certificate signature which identifies who it is. The browsers by means of setup root certificate authority (the list of root security certificates is pretty limited), are able to verify the signature provided so we can be sure that the data that is passed from the client browser to the server is encrypted and not pry to any prying eyes.</p>

<p>Various aspects related to corporate root certificate authority, and secure communication based on SSL would be a good read.</p>

<p>Please review the series with :</p>

<p>– <a href="/blog/2009/03/27/enterprise-security-part-0/">Enterprise Security</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-i/">Login Validation</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-ii/">Validate the server</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-iii/">Validate the client</a></p>

<p>– <a href="/blog/2010/01/25/enterprise-security-part-iv/">Web Application Security</a></p>

<p>Follow the next blog at <a href="/blog/2009/11/17/enterprise-security-part-iii/">Enterprise Security – Part III – Validate the client (with certs)</a></p>]]></content><author><name>Sam Gamare</name></author><category term="Applications" /><category term="Attack" /><category term="Database" /><category term="DDoS" /><category term="Encryption Encrypted Communication Security" /><category term="Enterprise Applications" /><category term="File System" /><category term="Firewall" /><category term="OS" /><category term="Port Scanning" /><category term="Security" /><category term="Session Hijacking" /><category term="Social Engineering" /><category term="SQL Injection" /><category term="SSO" /><category term="User Access" /><category term="Web Application Firewall" /><summary type="html"><![CDATA[In this series of application design and security, verifying the identity of the server for our applications with public/private certs.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-ii.svg" /><media:content medium="image" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-ii.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Enterprise Security – Part III – Validate the client (with certs)</title><link href="https://www.gamare.net/blog/2009/11/17/enterprise-security-part-iii/" rel="alternate" type="text/html" title="Enterprise Security – Part III – Validate the client (with certs)" /><published>2009-11-17T13:00:00+00:00</published><updated>2009-11-17T13:00:00+00:00</updated><id>https://www.gamare.net/blog/2009/11/17/enterprise-security-part-iii</id><content type="html" xml:base="https://www.gamare.net/blog/2009/11/17/enterprise-security-part-iii/"><![CDATA[<div class="header-image-wrapper">
  <img src="/assets/images/enterprise-security.png" alt="Enterprise Security" width="90%" />
</div>
<p><br /></p>

<hr />

<p>Continued from previous blog <a href="/blog/2009/11/17/enterprise-security-part-ii/">Enterprise Security – Part II – Validate the server</a></p>

<p>This setup is little rare to find. This is typically used in extra secure installations where the server application needs to verify the identity of the client browser who is authorized to access the application. This type of setup is generally limited to within the corporate boundary. Assume an example of a mutual fund sr. trader with access to initiate transactions in multi million dollars. In this case, in addition to login credentials based security, the company wants to ensure that this request comes from a corporate machine registered on the network which has limited applications controlled and managed per corporate standards and it is not a rogue laptop on the network.<br />
The setup in this case is generally a explicit client certificate which is generated using corporate certificate management engine (it might as well be a certificate from Verisign, Thawte, or any other known root provider). This certificate is registered on the client machine and setup to provide that to a specific server based website. During initial requests from the client to the website the client will provide the certificate for validation for the server to validate who he says he is. The server in this case might also be setup to provide certificate to provide who he says he is. The client might be prompted for login credentials by various mechanisms identified in Part I and Part II (on this page). This explicit handshake and login credential validation ensures that the application is being used appropriately by the right party in the correct environment, with “almost” impossible probability for a third party to hack that communication channel.</p>

<p>Please review the series with :</p>

<p>– <a href="/blog/2009/03/27/enterprise-security-part-0/">Enterprise Security</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-i/">Login Validation</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-ii/">Validate the server</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-iii/">Validate the client</a></p>

<p>– <a href="/blog/2010/01/25/enterprise-security-part-iv/">Web Application Security</a></p>

<p>Follow the next blog at <a href="/blog/2010/01/25/enterprise-security-part-iv/">Enterprise Security – Part IV – Web Application Security</a></p>]]></content><author><name>Sam Gamare</name></author><category term="Applications" /><category term="Attack" /><category term="Database" /><category term="DDoS" /><category term="Encryption Encrypted Communication Security" /><category term="Enterprise Applications" /><category term="File System" /><category term="Firewall" /><category term="OS" /><category term="Port Scanning" /><category term="Security" /><category term="Session Hijacking" /><category term="Social Engineering" /><category term="SQL Injection" /><category term="SSO" /><category term="User Access" /><category term="Web Application Firewall" /><summary type="html"><![CDATA[In this series of application design and security, verifying the identity of the client for our applications with certificates.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-iii.svg" /><media:content medium="image" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-iii.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Enterprise Security – Part I – Login Validation</title><link href="https://www.gamare.net/blog/2009/11/17/enterprise-security-part-i/" rel="alternate" type="text/html" title="Enterprise Security – Part I – Login Validation" /><published>2009-11-17T11:01:00+00:00</published><updated>2009-11-17T11:01:00+00:00</updated><id>https://www.gamare.net/blog/2009/11/17/enterprise-security-part-i</id><content type="html" xml:base="https://www.gamare.net/blog/2009/11/17/enterprise-security-part-i/"><![CDATA[<div class="header-image-wrapper">
  <img src="/assets/images/enterprise-security.png" alt="Enterprise Security" width="90%" />
</div>
<p><br /></p>

<hr />

<p>Continued from previous blog <a href="/blog/2009/03/27/enterprise-security-part-0/">Enterprise Security</a></p>

<p>Most of you at some point in your career may have setup a local web server installation and probably published articles and pictures using web servers. However here we are talking about a more than the generic setup; we will describe a basic enterprise application centric security setup.</p>

<p>When coupled with a typical windows environment, IIS can offer a very powerful security setup. The following factors come down to NTFS permissions, directory security, form based security, SSL certificates, along with impersonation and services / port lockdown. IIS offers multiple types of security setup when it comes to web access. The following scenarios describe various security setup with the description of how they are likely setup and how they are used.</p>

<p><strong>Login Validation</strong>: A client accessing the web site through HTTP (generally port 80 – can be different) can be offered “anonymous” access, similar to what most of us experience when we go to most http based web sites. When it is necessary to lock down the usage such that only registered users are able to access the content, directory security is enabled and anonymous access is disabled. You can only login if you enter valid “windows domain based login credentials”, and all content and documents within this website are secure from generic prying. This type of security setup is also called NTLM challenge response based login validation. This is commonly employed within inside and outside of corporate network boundaries.</p>

<p>Another form login validation is called form based security, a choice supported by using a .NET application with form based security. The way it works is when declared correctly in web.config IIS detects validation cookie with every request. In the absence of that cookie, IIS forces the user into a web form which explicitly prompts the user for credentials. The form when submitted generates a underlying windows ticket and ties it back to the secure cookie which is posted back in response to the user request. All further requests from the same client to the website now enjoy secure login and access to other resources available.</p>

<p>Please review the series with :</p>

<p>– <a href="/blog/2009/03/27/enterprise-security-part-0/">Enterprise Security</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-i/">Login Validation</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-ii/">Validate the server</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-iii/">Validate the client</a></p>

<p>– <a href="/blog/2010/01/25/enterprise-security-part-iv/">Web Application Security</a></p>

<p>Follow the next blog at <a href="https://www.gamare.net/blog/2009/11/17/enterprise-security-part-ii/">Enterprise Security – Part II – Validate the server</a></p>]]></content><author><name>Sam Gamare</name></author><category term="Uncategorized" /><category term="Applications" /><category term="Attack" /><category term="Authentication" /><category term="Database" /><category term="DDoS" /><category term="Encryption Encrypted Communication Security" /><category term="Enterprise Applications" /><category term="File System" /><category term="Firewall" /><category term="OS" /><category term="Port Scanning" /><category term="Security" /><category term="Session Hijacking" /><category term="Social Engineering" /><category term="SQL Injection" /><category term="SSO" /><category term="User Access" /><category term="Web Application Firewall" /><summary type="html"><![CDATA[In this series of application design and security, here is the basic one to start with for Authentication patterns for our applications.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-i.svg" /><media:content medium="image" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-i.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Enterprise Security</title><link href="https://www.gamare.net/blog/2009/03/27/enterprise-security-part-0/" rel="alternate" type="text/html" title="Enterprise Security" /><published>2009-03-27T10:52:00+00:00</published><updated>2009-03-27T10:52:00+00:00</updated><id>https://www.gamare.net/blog/2009/03/27/enterprise-security-part-0</id><content type="html" xml:base="https://www.gamare.net/blog/2009/03/27/enterprise-security-part-0/"><![CDATA[<div class="header-image-wrapper">
  <img src="/assets/images/enterprise-security.png" alt="Ducks" width="90%" />
</div>
<p><br /></p>

<hr />

<p>Enterprise Application Security is indeed a broad topic subject to different levels of definition and interpretation, per system needs. Security needs for top secret Department of Defense projects would be lot different from the security required for an ecommerce application which intends to sell to the consumer. Having worked with different Enterprise Applications across a wide variety of industries, I prefer to look at security holistically with multiple perspectives. As a rule of thumb the more intense the security needs, the higher the cost of the entire implementation.</p>

<p>From an architecture layer perspective some of aspects to be considered are :</p>

<p>* <strong>User Access security –</strong> These include two factor and three factor access mechanisms driven by passwords, Biometrics, Single Sign On (SSO), Kerberos and various other mechanisms.<br />
* <strong>Web Server security</strong> – HTTPS/SSL to encrypt communication between client and server. A mechanism without which most of today’s ecommerce based business on the internet would not exist to this advanced degree. The web server account itself should be a non-Admin level account setup to run within a boxed environment. Communication from the web server to the application server can be encrypted using SSL as needed. Security setup on Microsoft IIS is slightly different from Apache. The integrated support offered by IIS is difficult if not painful to achieve with Apache.<br />
* <strong>Application Server security</strong> – The application server has to be running with a non-privileged non-admin account. The application servers have the capability to allow certain types of users based on group criteria. For example: IIS will allow us to define the domain users that are allowed for a certain site based on domain. IIS will allow us to setup impersonation accounts for anonymously access accounts, and so on. Usually the application server will validate the users, based on database/LDAP or other security models. The communication from the application to the database and/or LDAP and other systems can be encrypted using SSL on an as needed basis.<br />
* <strong>Database security</strong> – Integrated login versus explicit login. The permission model can be based on windows groups and/or database groups. Complex web applications will provide granular application level security based on application level groups, and permissions per field type. Trusted / Integrated access support by Microsoft SQL Server is a addon but non generic implementation compared to other databases like Oracle, DB2 and others.<br />
* <strong>OS Group level security</strong> – OS groups can be used at various levels nested through the web/application server level in conjunction with the file system group allocations in place.<br />
* <strong>File system level security</strong> – Protecting the file system on the server is generally left to the level of generic access to everyone who can gain access to the machine. On Microsoft Windows (NT, 2000, 2003, 2008) machines this is NTFS access, while on Unix/Linux (HP UX, Solaris, Ubuntu, Debian, others) based infrastructure this is driven by rwx privileges per user, group and public. File system security access can be detrimental if the box is compromised. Explicit security and encryption can offer great level of protection at this level.<br />
* <strong>Proprietary security implementations</strong> – Example the account required to modify the cacert for java based application server or the windows system level privilege requirement which is not even available to windows Administrator users, unless modified by local/Domain group policies through Microsoft Active Directory.</p>

<p><strong>From an Attack Perspective:</strong></p>

<p>* SQL injection<br />
* Session Hijacking<br />
* Denial of Service<br />
* Social engineering to obtain fraudulent credentials<br />
* Port scanning<br />
* Firewalls<br />
* Encryption over the wire</p>

<p><strong>From a Physical perspective</strong>:</p>

<p>* Physically securing the location of your infrastructure is crucial to security.<br />
* Storage encryption mechanisms to protect data if someone can get access to the data.<br />
* Disaster Recovery procedures to quickly address issues related to physical outages in terms of location inaccessible due to massive power failure, fire, floods, and other hazards.</p>

<p>In the following weeks we shall dissect each aspect of security to dive deeper into understanding issues with today’s Enterprise Application Security.</p>

<p>Please review the series with :</p>

<p>– <a href="/blog/2009/03/27/enterprise-security-part-0/">Enterprise Security</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-i/">Login Validation</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-ii/">Validate the server</a></p>

<p>– <a href="/blog/2009/11/17/enterprise-security-part-iii/">Validate the client</a></p>

<p>– <a href="/blog/2010/01/25/enterprise-security-part-iv/">Web Application Security</a></p>

<p>Follow the next blog at <a href="/blog/2009/11/17/enterprise-security-part-i/">Enterprise Security – Part I – Login Validation</a></p>]]></content><author><name>Sam Gamare</name></author><category term="Uncategorized" /><category term="Applications" /><category term="Attack" /><category term="Database" /><category term="DDoS" /><category term="Encryption Encrypted Communication Security" /><category term="Enterprise Applications" /><category term="File System" /><category term="Firewall" /><category term="OS" /><category term="Port Scanning" /><category term="Security" /><category term="Session Hijacking" /><category term="Social Engineering" /><category term="SQL Injection" /><category term="SSO" /><category term="User Access" /><category term="Web Application Firewall" /><summary type="html"><![CDATA[An application architects thoughts on how security should be thought of and designed for enterprise applications.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-0.svg" /><media:content medium="image" url="https://www.gamare.net/assets/images/icons/icon-enterprise-security-part-0.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>