avatarTeri Radichel

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

5378

Abstract

class="hljs-attr">"meta"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span> <span class="hljs-attr">"resourceType"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"User"</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"created"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2010-01-23T04:56:22Z"</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"lastModified"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2011-05-13T04:42:34Z"</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"version"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"W/"3694e05e9dff590""</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"location"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"</span> <span class="hljs-punctuation">}</span> <span class="hljs-punctuation">}</span></pre></div><p id="e637">By defining a standard format for data to be passed between systems, different vendors can write code to handle this standard data format. That means different systems will be more easily integrated. In fact, AWS and Okta integrate using SCIM — but we’ll look more into the details of that in an upcoming post.</p><p id="b04a">The document also defines some key terms which you might see in vendor documentation related to identity management, including <a href="https://readmedium.com/okta-for-directory-idp-and-sso-e4f4b5be02bb">Okta</a>’s.</p><blockquote id="2882"><p><b>Service Provider:</b> An HTTP web application that provides identity information via the SCIM protocol.</p></blockquote><blockquote id="0893"><p><b>Client: </b>A website or application that uses the SCIM protocol to manage identity data maintained by the service provider. The client initiates SCIM HTTP requests to a target service provider.</p></blockquote><blockquote id="2250"><p><b>Provisioning Domain:</b> A provisioning domain is an administrative domain external to the domain of a service provider for legal or technical reasons. For example, a SCIM client in an enterprise (provisioning client) communicates with a SCIM service provider that is owned or controlled by a different legal entity.</p></blockquote><blockquote id="fb50"><p><b>Resource Type:</b> A type of a resource that is managed by a service provider. The resource type defines the resource name, endpoint URL, schemas, and other metadata that indicate where a resource is managed and how it is composed, e.g., “User” or “Group”.</p></blockquote><blockquote id="6026"><p><b>Resource:</b> An artifact that is managed by a service provider and that contains one or more attributes, e.g., “User” or “Group”.</p></blockquote><blockquote id="8034"><p><b>Endpoint:</b> An endpoint for a service provider is a defined base path relative to the service provider’s Base URI over which SCIM operations may be performed against SCIM resources. For example, assuming that the service provider’s Base URI is “https://example.com/", “User” resources may be accessed at the “https://example.com/Users" or “https://example.com/v2/Users" endpoint. Service provider schemas MAY be returned from the “/Schemas” endpoint.</p></blockquote><h2 id="638e">RFC 7644 — System for Cross-domain Identity Management: Protocol</h2><p id="7219">The third document defines the protocol for sending requests between systems to query or update identity information. The SCIM protocol uses HTTP to send messages between systems. The protocol makes some recommendations regarding authentication and authorization to perform actions via the SCIM protocol but does not provide any SCIM-specific mechanism.</p><p id="d7c0">One key point:</p><blockquote id="17d8"><p>Regardless of methodology, the SCIM service provider MUST be able to map the authenticated client to an access control policy in order to determine the client’s authorization to retrieve and update SCIM resources.</p></blockquote><p id="9fb0">Refer to the specification for details to perform the actions listed below using the defined endpoints in Table 2:</p><div id="7c7a"><pre>Resource Endpoint [HTTP] Operations Description <span class="hljs-comment">-------- ---------------- ---------------------- --------------------</span> <span class="hljs-keyword">User</span> /Users <span class="hljs-keyword">GET</span> (Section <span class="hljs-number">3.4</span><span class="hljs-number">.1</span>), Retrieve, <span class="hljs-keyword">add</span>, POST (Section <span class="hljs-number">3.3</span>), modify Users. PUT (Section <span class="hljs-number">3.5</span><span class="hljs-number">.1</span>), PATCH (Section <span class="hljs-number">3.5</span><span class="hljs-number">.2</span>), <span class="hljs-keyword">DELETE</span> (Section <span class="hljs-number">3.6</span>)

<span class="hljs-keyword">Group</span> /<span class="hljs-keyword">Groups</span> <span class="hljs-keyword">GET</span> (Section <span class="hljs-number">3.4</span><span class="hljs-number">.1</span>), Retrieve, <span class="h

Options

ljs-keyword">add</span>, POST (Section <span class="hljs-number">3.3</span>), modify <span class="hljs-keyword">Groups</span>. PUT (Section <span class="hljs-number">3.5</span><span class="hljs-number">.1</span>), PATCH (Section <span class="hljs-number">3.5</span><span class="hljs-number">.2</span>), <span class="hljs-keyword">DELETE</span> (Section <span class="hljs-number">3.6</span>)

Self /Me <span class="hljs-keyword">GET</span>, POST, PUT, PATCH, <span class="hljs-keyword">Alias</span> <span class="hljs-keyword">for</span> operations <span class="hljs-keyword">DELETE</span> (Section <span class="hljs-number">3.11</span>) against a resource mapped <span class="hljs-keyword">to</span> an authenticated subject (e.g., <span class="hljs-keyword">User</span>).

Service /ServiceProvider <span class="hljs-keyword">GET</span> (Section <span class="hljs-number">4</span>) Retrieve service provider Config provider<span class="hljs-string">'s config. configuration.

Resource /ResourceTypes GET (Section 4) Retrieve supported type resource types.

Schema /Schemas GET (Section 4) Retrieve one or more supported schemas.

Bulk /Bulk POST (Section 3.7) Bulk updates to one or more resources.

Search [prefix]/.search POST (Section 3.4.3) Search from system root or within a resource endpoint for one or more resource types using POST.</span></pre></div><h2 id="3247">SCIM — Summary</h2><p id="3ff5">As you can see from the list above, SCIM facilitates sharing identity and related information between systems. The JSON schema defines the standard for the data sent between systems and the protocol defines how the messages will be sent back and forth.</p><p id="bf97">As noted there are various mechanisms for pushing and pulling data so exactly what triggers a change may differ from system to system. Additionally, it appears here that we are syncing data, so we’ll have to see how that works in relation to truly federating authentication to a third-party system as I set out to do in this post:</p><div id="fc53" class="link-block"> <a href="https://readmedium.com/mitigating-createuser-privilege-escalation-and-back-doors-d84ee7ef7d85"> <div> <div> <h2>Mitigating CreateUser Privilege Escalation and Back Doors</h2> <div><h3>ACM.143 Preventing an attacker from creating a backdoor user in your cloud account</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*CkEFLvick4Ca93NLIriYAg.png)"></div> </div> </div> </a> </div><p id="137e">Now that we have a rough idea how SCIM works, we can take a closer look at how it works between two specific systems.</p><p id="f6ce">Follow for updates.</p><p id="4a3a">Teri Radichel | <i>© <a href="https://2ndsightlab.com/?source=post_page---------------------------">2nd Sight Lab</a> 2023</i></p><div id="8b5f"><pre><span class="hljs-section">About Teri Radichel:

⭐️ Author: Cybersecurity Books
⭐️ Presentations: Presentations by Teri Radichel
⭐️ Recognition: SANS Award, AWS Security Hero, IANS Faculty
⭐️ Certifications: SANS ~ GSE 240
⭐️ Education: BA Business, Master of Software Engineering, Master of Infosec
⭐️ Company: Penetration Tests, Assessments, Phone Consulting ~ 2nd Sight Lab</pre></div><div id="caae"><pre><span class="hljs-section">Need Help With Cybersecurity, Cloud, or Application Security?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</span>
🔒 Request a penetration test or security assessment
🔒 Schedule a consulting call
🔒 Cybersecurity Speaker for Presentation</pre></div><div id="5a42"><pre>Follow <span class="hljs-keyword">for</span> more stories like <span class="hljs-keyword">this</span>:

❤️ Sign Up my Medium Email List ❤️ Twitter: <span class="hljs-meta">@teriradichel</span> ❤️ LinkedIn: https:<span class="hljs-comment">//www.linkedin.com/in/teriradichel</span> ❤️ Mastodon: <span class="hljs-meta">@teriradichel</span><span class="hljs-meta">@infosec</span>.exchange ❤️ Facebook: 2nd Sight Lab ❤️ YouTube: @2ndsightlab</pre></div><figure id="faf5"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*H9Ew1KCl-29nZiPR.jpeg"><figcaption></figcaption></figure></article></body>

SCIM (System for Cross-domain Identity Management)

ACM.150 Automated management of identities across systems

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

⚙️ Check out my series on Automating Cybersecurity Metrics. The Code.

🔒 Related Stories: Cloud Governance | IAM | AWS Security

💻 Free Content on Jobs in Cybersecurity | ✉️ Sign up for the Email List

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In my last post I provided an overview of how Okta can interact with systems to help with authentication and SSO.

One of the terms I mentioned was SCIM which stands for System for Cross-domain Identity Management. This post covers what SCIM is so we can take a look at how it works in more detail in upcoming posts.

The SCIM standard came into existence as companies started using cloud-based platforms and needed to integrate identity management between different systems. You can read about the history of SCIM here and in the referenced documents.

The SCIM standard attempts to define a standard way to automate the exchange of identity-related information. SCIM builds on prior standards such as SPML, PortableContacts, vCards, and LDAP directory services but attempts to simplify the process.

The standard is defined in the following documents:

RFC 7642- System for Cross-domain Identity Management: Definitions, Overview, Concepts, and Requirements

This document is not a standard but is for informational purposes. It defines some of the basic terminology.

  • Triggers: activities that start SCIM flows.
  • Actors: The parties involved in transferring identity information.
  • Modes: Push or pull identity information.
  • Flows: Different scenarios when identity information will be pushed or pulled between actors (e.g. creating, updating, or deleting an identity or changing a password).
  • Scenarios when SCIM might be used such as migrating between systems or syncing identities for the purpose of SSO.

RFC 7643 — System for Cross-domain Identity Management: Core Schema

This document defines the JSON schema used by SCIM. For example, this is the most minimal representation of a user (Section 8.1, Figure 3):

{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
  "id": "2819c223-7f76-453a-919d-413861904646",
  "userName": "[email protected]",
  "meta": {
    "resourceType": "User",
    "created": "2010-01-23T04:56:22Z",
    "lastModified": "2011-05-13T04:42:34Z",
    "version": "W\/\"3694e05e9dff590\"",
    "location":
     "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"
  }
}

By defining a standard format for data to be passed between systems, different vendors can write code to handle this standard data format. That means different systems will be more easily integrated. In fact, AWS and Okta integrate using SCIM — but we’ll look more into the details of that in an upcoming post.

The document also defines some key terms which you might see in vendor documentation related to identity management, including Okta’s.

Service Provider: An HTTP web application that provides identity information via the SCIM protocol.

Client: A website or application that uses the SCIM protocol to manage identity data maintained by the service provider. The client initiates SCIM HTTP requests to a target service provider.

Provisioning Domain: A provisioning domain is an administrative domain external to the domain of a service provider for legal or technical reasons. For example, a SCIM client in an enterprise (provisioning client) communicates with a SCIM service provider that is owned or controlled by a different legal entity.

Resource Type: A type of a resource that is managed by a service provider. The resource type defines the resource name, endpoint URL, schemas, and other metadata that indicate where a resource is managed and how it is composed, e.g., “User” or “Group”.

Resource: An artifact that is managed by a service provider and that contains one or more attributes, e.g., “User” or “Group”.

Endpoint: An endpoint for a service provider is a defined base path relative to the service provider’s Base URI over which SCIM operations may be performed against SCIM resources. For example, assuming that the service provider’s Base URI is “https://example.com/", “User” resources may be accessed at the “https://example.com/Users" or “https://example.com/v2/Users" endpoint. Service provider schemas MAY be returned from the “/Schemas” endpoint.

RFC 7644 — System for Cross-domain Identity Management: Protocol

The third document defines the protocol for sending requests between systems to query or update identity information. The SCIM protocol uses HTTP to send messages between systems. The protocol makes some recommendations regarding authentication and authorization to perform actions via the SCIM protocol but does not provide any SCIM-specific mechanism.

One key point:

Regardless of methodology, the SCIM service provider MUST be able to map the authenticated client to an access control policy in order to determine the client’s authorization to retrieve and update SCIM resources.

Refer to the specification for details to perform the actions listed below using the defined endpoints in Table 2:

Resource Endpoint            [HTTP] Operations      Description
   -------- ---------------- ---------------------- --------------------
   User     /Users           GET (Section 3.4.1),   Retrieve, add,
                             POST (Section 3.3),    modify Users.
                             PUT (Section 3.5.1),
                             PATCH (Section 3.5.2),
                             DELETE (Section 3.6)

   Group    /Groups          GET (Section 3.4.1),   Retrieve, add,
                             POST (Section 3.3),    modify Groups.
                             PUT (Section 3.5.1),
                             PATCH (Section 3.5.2),
                             DELETE (Section 3.6)

   Self     /Me              GET, POST, PUT, PATCH, Alias for operations
                             DELETE (Section 3.11)  against a resource
                                                    mapped to an
                                                    authenticated
                                                    subject (e.g.,
                                                    User).

   Service  /ServiceProvider GET (Section 4)        Retrieve service
   provider Config                                  provider's
   config.                                          configuration.

   Resource /ResourceTypes   GET (Section 4)        Retrieve supported
   type                                             resource types.

   Schema   /Schemas         GET (Section 4)        Retrieve one or more
                                                    supported schemas.

   Bulk     /Bulk            POST (Section 3.7)     Bulk updates to one
                                                    or more resources.

   Search   [prefix]/.search POST (Section 3.4.3)   Search from system
                                                    root or within a
                                                    resource endpoint
                                                    for one or more
                                                    resource types using
                                                    POST.

SCIM — Summary

As you can see from the list above, SCIM facilitates sharing identity and related information between systems. The JSON schema defines the standard for the data sent between systems and the protocol defines how the messages will be sent back and forth.

As noted there are various mechanisms for pushing and pulling data so exactly what triggers a change may differ from system to system. Additionally, it appears here that we are syncing data, so we’ll have to see how that works in relation to truly federating authentication to a third-party system as I set out to do in this post:

Now that we have a rough idea how SCIM works, we can take a closer look at how it works between two specific systems.

Follow for updates.

Teri Radichel | © 2nd Sight Lab 2023

About Teri Radichel:
~~~~~~~~~~~~~~~~~~~~
⭐️ Author: Cybersecurity Books
⭐️ Presentations: Presentations by Teri Radichel
⭐️ Recognition: SANS Award, AWS Security Hero, IANS Faculty
⭐️ Certifications: SANS ~ GSE 240
⭐️ Education: BA Business, Master of Software Engineering, Master of Infosec
⭐️ Company: Penetration Tests, Assessments, Phone Consulting ~ 2nd Sight Lab
Need Help With Cybersecurity, Cloud, or Application Security?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
🔒 Request a penetration test or security assessment
🔒 Schedule a consulting call
🔒 Cybersecurity Speaker for Presentation
Follow for more stories like this:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
❤️ Sign Up my Medium Email List
❤️ Twitter: @teriradichel
❤️ LinkedIn: https://www.linkedin.com/in/teriradichel
❤️ Mastodon: @teriradichel@infosec.exchange
❤️ Facebook: 2nd Sight Lab
❤️ YouTube: @2ndsightlab
Scim
Identity
Sso
Idp
Cloud Security
Recommended from ReadMedium