<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Pulumi Blog: Pulumi enterprise</title><link>https://www.pulumi.com/blog/tag/pulumi-enterprise/</link><description>Pulumi blog posts: Pulumi enterprise.</description><language>en-us</language><pubDate>Thu, 13 Oct 2022 00:00:00 +0000</pubDate><item><title>Using Pulumi Securely</title><link>https://www.pulumi.com/blog/using-pulumi-securely/</link><pubDate>Thu, 13 Oct 2022 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/using-pulumi-securely/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/using-pulumi-securely/index.png" /&gt;
&lt;p&gt;Cloud computing’s greatest strength and weakness is the proliferation of a massive number of services globally. To adequately assess and mitigate the inherent risks for your company, customers, and employees, cloud architects are typically responsible for a vast surface area of potential endpoints and vectors of attack.&lt;/p&gt;
&lt;h2 id="cloud-security-posture"&gt;Cloud Security Posture&lt;/h2&gt;
&lt;p&gt;AWS likes to talk about a &lt;a href="https://aws.amazon.com/compliance/shared-responsibility-model/"&gt;Shared Responsibility Model&lt;/a&gt;, their friendly way of saying, “we’ve got our stuff covered, and if you’re compromised, it’s almost certainly your fault.” They have built up practices and recommendations, like the AWS Well-Architected Framework. Their pillars of architecture philosophy give you your best chances to securely use their resources (following these recommendations is easy with &lt;a href="https://www.pulumi.com/docs/iac/clouds/aws/guides/"&gt;Crosswalk for AWS&lt;/a&gt; from Pulumi). Increasing high-profile attacks against private and open-source software supply chains have developers increasingly on high alert and conscious of incorporating more security into their DevOps.&lt;/p&gt;
&lt;p&gt;Risks associated with maintaining a good cloud security posture extend to your infrastructure as code with Pulumi and it’s important to leverage the features and capabilities of the Pulumi platform along with good industry practices to secure your code, configuration and secrets.&lt;/p&gt;
&lt;h2 id="pulumis-hierarchy"&gt;Pulumi’s Hierarchy&lt;/h2&gt;
&lt;p&gt;Pulumi has three levels to consider access for: users, teams and organizations.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/admin/organizations/"&gt;Organizations&lt;/a&gt; are a space for you to collaborate on shared projects and stacks. You may have multiple cloud accounts from a single cloud provider or multiple cloud provider accounts tied to an organization in any combination. It’s recommended that you segment organizations and cloud accounts to limit access and the “blast radius” of security or financial events that may occur within them.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/teams/"&gt;Teams&lt;/a&gt; are groups of users within an organization with specific permissions to stacks. Consider using these to break up access to environments such as dev, staging and production. You should look to mirror your code repository or IAM teams/groups as much as possible.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/accounts/"&gt;Users&lt;/a&gt; are tied to personal identities, often with an identity provider and should be used wherever a human is using Pulumi. These identities should not be used for any systems, tools or pipeline-based provisioning.&lt;/p&gt;
&lt;h2 id="security-best-practices-with-pulumi"&gt;Security Best Practices with Pulumi&lt;/h2&gt;
&lt;p&gt;The following recommendations should help you get started and prepare you to scale your company, application and cloud engineering team long term.&lt;/p&gt;
&lt;h3 id="manage-federated-identity"&gt;Manage Federated Identity&lt;/h3&gt;
&lt;p&gt;Connect your user and Pulumi organization with an &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/admin/organizations/#organization-identity-providers"&gt;Identity Provider&lt;/a&gt; such as &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/admin/organizations/#github-identity-provider"&gt;Github&lt;/a&gt;, &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/admin/organizations/#gitlab-identity-provider"&gt;Gitlab&lt;/a&gt; or &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/admin/organizations/#bitbucket-identity-provider"&gt;BitBucket&lt;/a&gt;, your &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/admin/organizations/#saml-single-sign-on-sso"&gt;Single Sign On (SSO)&lt;/a&gt; system and/or another &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/scim/"&gt;System for Cross-Domain Identity Management&lt;/a&gt; (SCIM). Your code repositories hold your Infrastructure as Code, and most organizations are motivated to keep access tightly controlled. SSO improves this process across tools and puts more control into your organization’s hands. SCIM enables you to manage your users and groups centrally in your Identity Provider (IdP) and then synchronize those users and groups to the Pulumi Service. Leveraging your existing onboarding and offboarding process will help limit the risk of bad actors in Pulumi itself.&lt;/p&gt;
&lt;h3 id="build-pulumi-teams"&gt;Build Pulumi Teams&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/teams#creating-a-team"&gt;Teams&lt;/a&gt; improve on basic role-based access control (RBAC) for administrators and users by allowing you to group users and their access to specific stacks in your organization. For example, a team called &lt;code&gt;productionreadonly&lt;/code&gt; could be created and scoped so that all members have only limited access to read the production stacks, while another team, &lt;code&gt;productionadmins&lt;/code&gt;, would retain full privileges to those stacks.&lt;/p&gt;
&lt;h3 id="import-manually-created-resources"&gt;Import Manually Created Resources&lt;/h3&gt;
&lt;p&gt;Manually created cloud resources are error-prone and difficult to audit, iterate and improve on. If you’ve created manual resources, consider &lt;a href="https://www.pulumi.com/blog/changes-to-import/"&gt;importing&lt;/a&gt; them to Pulumi programs.&lt;/p&gt;
&lt;h3 id="tag-your-stacks"&gt;Tag your Stacks&lt;/h3&gt;
&lt;p&gt;We have previously covered &lt;a href="https://www.pulumi.com/blog/automatically-enforcing-aws-resource-tagging-policies/"&gt;Tag Policies&lt;/a&gt; as a best practice for the cloud resources themselves. Still, you can also tag your Pulumi stacks to help organize and visualize your application resources in logical groupings that will help you assess, respond and automate incident remediation. Here are two examples of using tagging your stacks automatically: in &lt;a href="https://github.com/pulumi/examples/blob/master/aws-py-stackreference/team/__main__.py#L8-L13"&gt;Python&lt;/a&gt; and &lt;a href="https://github.com/pulumi/examples/blob/master/aws-ts-stackreference/team/index.ts#L17-L22"&gt;TypeScript&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="deploy-from-pipelines"&gt;Deploy from Pipelines&lt;/h3&gt;
&lt;p&gt;Automate every step of your deployment process for anything beyond local development by creating CI/CD pipelines. Manual approval steps in your pipeline should be avoided. Consider creating automated checks to ensure your infrastructure is created only with approved &lt;a href="https://www.pulumi.com/docs/iac/packages-and-automation/pulumi-packages/debugging-provider-packages/"&gt;Pulumi Packages&lt;/a&gt; and automatically ensure your infrastructure is in compliance by using &lt;a href="https://www.pulumi.com/docs/using-pulumi/crossguard/"&gt;CrossGuard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Leveraging &lt;a href="https://www.pulumi.com/docs/using-pulumi/automation-api/"&gt;Automation API&lt;/a&gt; as the programmatic interface for running Pulumi programs without the Pulumi CLI is a strongly typed and safe way to use Pulumi in embedded contexts such as web servers without having to shell out to a CLI. For example, &lt;a href="https://www.pulumi.com/blog/how-elkjop-nordic-enables-developers-to-self-serve-infrastructure/"&gt;Elkjop Nordic uses Automation API to provide a self-service portal&lt;/a&gt; that serves as a secure IT vending machine full of their application and infrastructure building blocks.&lt;/p&gt;
&lt;h3 id="log-everything"&gt;Log Everything&lt;/h3&gt;
&lt;p&gt;Track key system events such as user and pipeline activity, attempted and restricted activity, and identity and access control changes. Use Pulumi audit logs to simplify this process out of the box. If applicable, we would suggest automatically exporting &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/audit-logs#automated-export"&gt;Pulumi Audit Logs&lt;/a&gt; to your systems.&lt;/p&gt;
&lt;h3 id="use-tokens"&gt;Use Tokens&lt;/h3&gt;
&lt;p&gt;Organization Access Tokens, Team Access Tokens and Personal Access Tokens securely connect your automation pipelines and development environments with Pulumi without the risks of association user/password combinations. Machines talk to Pulumi with tokens of various types, and it is always advisable to use Tokens over Users where possible. More on the types of tokens is below.&lt;/p&gt;
&lt;h4 id="organizational-access-tokens"&gt;Organizational Access Tokens&lt;/h4&gt;
&lt;p&gt;These are scoped to the entire Pulumi organization. Use these for tooling with broad access across stacks and resources deployed in that organization. For example, if your production environment runs in an isolated cloud account and organization, then an &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/organization-access-tokens/"&gt;Organization Access Token&lt;/a&gt; is likely appropriate for your CI/CD pipeline that deploys production.&lt;/p&gt;
&lt;h4 id="team-access-tokens"&gt;Team Access Tokens&lt;/h4&gt;
&lt;p&gt;Scoped to the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/team-access-tokens#stacks"&gt;stack access&lt;/a&gt; of a Pulumi team. Use these when resources associated with different environments or services are commingled within a single cloud account or organization. In general, it is often recommended to create a &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/team-access-tokens/"&gt;Team Access Token&lt;/a&gt; for each CI/CD pipeline, for example, &lt;code&gt;dev&lt;/code&gt; vs &lt;code&gt;production&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id="personal-access-tokens"&gt;Personal Access Tokens&lt;/h4&gt;
&lt;p&gt;Scoped to &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/accounts#access-tokens"&gt;individual users&lt;/a&gt;. Used whenever a developer deploys from their local machine. Be sure your users are part of a Pulumi team to simplify their role-based access within the platform.&lt;/p&gt;
&lt;h3 id="rotate-the-tokens"&gt;Rotate the Tokens&lt;/h3&gt;
&lt;p&gt;Add Pulumi to your list of tokens to rotate on a regular basis.&lt;/p&gt;
&lt;h3 id="assessing-and-implementing"&gt;Assessing and Implementing&lt;/h3&gt;
&lt;p&gt;Even if you’ve been using Pulumi for a while, we recommend you regularly take these three steps to continuously audit and improve your cloud security posture as it relates to your infrastructure as code:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Confirm your users&amp;rsquo;, teams&amp;rsquo;, and organization access are in line with either or both your code access or cloud access policies; make any necessary updates to access, permissions or scope of privilege.&lt;/li&gt;
&lt;li&gt;Audit any pipeline that uses Pulumi and ensure that they use fresh, rotated tokens.&lt;/li&gt;
&lt;li&gt;Review your audit logs regularly, noting any abnormal or unexpected activity. It is advisable to export these audit logs and process them with a security event management system.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Some of the features mentioned, such as teams, SSO/SCIM and audit logs, are only available to Enterprise and/or Business Critical Edition users and those on our 14-day trial. If you would like to implement and/or test any of these features please &lt;a href="https://app.pulumi.com/site/trial"&gt;start a trial&lt;/a&gt; or &lt;a href="https://www.pulumi.com/contact/"&gt;contact us&lt;/a&gt; for access.&lt;/p&gt;</description><author>Tushar Shah</author><category>security</category><category>pulumi-enterprise</category></item><item><title>How Elkjøp Nordic enables self-service infrastructure for developers</title><link>https://www.pulumi.com/blog/how-elkjop-nordic-enables-developers-to-self-serve-infrastructure/</link><pubDate>Fri, 01 Jul 2022 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/how-elkjop-nordic-enables-developers-to-self-serve-infrastructure/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/how-elkjop-nordic-enables-developers-to-self-serve-infrastructure/index.png" /&gt;
&lt;p&gt;At PulumiUP 2022, Tomas Jansson, software architect at Elkjøp Nordic, gave a presentation on how to enable developers to self-service infrastructure by using Pulumi’s &lt;a href="https://www.pulumi.com/automation/"&gt;Automation API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Elkjøp Nordic is the leading consumer electronics retailer in the Nordics. The company sells consumer electronics, mobile phones, computers, white goods, domestic appliances, and services linked to these products both directly to consumers and to businesses. It is an omnichannel retailer and serves customers both online and through more than 400 stores. Elkjøp has retail outlets in Norway, Sweden, Finland and Denmark, and franchise operations in Greenland and Faroe Islands.&lt;/p&gt;
&lt;p&gt;To support the company’s modernization strategy, Tomas developed a self-service infrastructure platform that would enable any developer to easily provision cloud infrastructure that uses approved resources and security practices. The goal was to empower teams at Elkjøp to increase their development velocity by using the cloud, while maintaining guardrails that uphold security and compliance.&lt;/p&gt;
&lt;p&gt;Watch the full presentation below or read on to learn the highlights of his presentation:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/aoa_O-rh5KE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="the-problem-balancing-agility-and-governance"&gt;The Problem: Balancing Agility and Governance&lt;/h2&gt;
&lt;p&gt;To achieve his goals, Tomas knew he had to solve the problem of balancing freedom with control. On the one hand, he wanted to foster the creativity of his developers and encourage innovation. He wanted his team to feel they were trusted and had the room to create the best solutions they could. On the other hand, he knew he had to maintain some control. Elkjøp needed to keep its applications secure. It also needed good governance so that teams can keep track of who is making changes. Tomas also wanted to limit the impact of deploying untested code. Code that was still being developed needed to be confined to the developer’s own environment. Finding the right balance between independence and control was paramount. Tomas believed this would result in great software and in developers who would enjoy their work.&lt;/p&gt;
&lt;h2 id="the-solution-a-self-service-infrastructure-platform"&gt;The Solution: A Self-Service Infrastructure Platform&lt;/h2&gt;
&lt;p&gt;Tomas’ solution was to build a self-service infrastructure platform. Self-service infrastructure makes it possible for developers to easily access the infrastructure they need while limiting access to resources they don’t need. In effect, self-service infrastructure is a walled garden. Within the garden, developers have all the freedom they need. However, nothing they do affects what’s outside the wall. Code that causes unintended changes only affects them and no one else.&lt;/p&gt;
&lt;p&gt;Tomas built an application that provides a “walled garden” of self-service infrastructure. Developers can create the environments they need, including an Azure resource group and a Kubernetes namespace, all through a graphical user interface. Developers can define whether the environment is for development, test or production. They can also assign values, such as which team members should have admin privileges to the associated GitHub repositories or who can contribute. From there, the platform handles provisioning and configuring all of these resources.&lt;/p&gt;
&lt;p&gt;Here is an example that shows how a developer can create a repository simply by selecting a few parameters from a drop-down list.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/how-elkjop-nordic-enables-developers-to-self-serve-infrastructure/create-repo.png" alt="Creating a new repository"&gt;&lt;/p&gt;
&lt;p&gt;Tomas determined that the best way to implement self-service infrastructure was with Pulumi and its &lt;a href="https://www.pulumi.com/automation/"&gt;Automation API&lt;/a&gt;. By using Pulumi, he could use standard programming languages to define infrastructure while using familiar software tools like IDEs and test frameworks. Pulumi also natively supports Azure and Kubernetes with 100% coverage of each provider’s APIs and same-day access to new features and updates. Finally, the Pulumi Automation API would enable him to program infrastructure automation directly into his application.&lt;/p&gt;
&lt;p&gt;The Pulumi Automation API is a programmatic interface for running Pulumi programs without the Pulumi CLI. Automation API encapsulates the functionality of the CLI (&lt;code&gt;pulumi up&lt;/code&gt;, &lt;code&gt;pulumi preview&lt;/code&gt;, &lt;code&gt;pulumi destroy&lt;/code&gt;, &lt;code&gt;pulumi stack init&lt;/code&gt;, etc.) but with more flexibility since infrastructure operations can be controlled programmatically.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/how-elkjop-nordic-enables-developers-to-self-serve-infrastructure/automation-api-diagram.png" alt="Deploying with the Pulumi CLI and Automation API"&gt;&lt;/p&gt;
&lt;h2 id="how-the-self-service-infrastructure-platform-was-built"&gt;How the self-service infrastructure platform was built&lt;/h2&gt;
&lt;p&gt;Here is the workflow for the Elkjøp self-service infrastructure platform.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/how-elkjop-nordic-enables-developers-to-self-serve-infrastructure/elkjop-platform-diagram.png" alt="The Elkjøp self-service infrastructure platform"&gt;&lt;/p&gt;
&lt;p&gt;The self-service platform is a web application that runs the Pulumi Automation API on the server side. The application uses Pulumi to provision and configure every environment resource such as Azure resource groups, Kubernetes namespaces, service principals, and Kubernetes service accounts. Each environment comes with a Git repository that&amp;rsquo;s used by developers to manage their deployments. The Git repositories are the locus of each environment because they store everything needed to deploy changes such as infrastructure code and environment credentials.&lt;/p&gt;
&lt;p&gt;Using the Pulumi Automation API, the application creates an Azure resource group, a team in both Azure AD and GitHub, and a new GitHub repository. The application then grants administrative access to the GitHub repo to members of the AD group. In addition to creating a Git repository for each environment, the application uses stack references for each Azure environment to inject the associated credentials into the GitHub Secret Store. These credentials are scoped to each GitHub environment so that developers can only work in their own environment. If a team has multiple environments, each environment has its own credentials so developers can’t, for example, deploy from a test environment to a production environment. Secrets are managed through the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/"&gt;Pulumi Service&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Every new repository comes with Pulumi programs that developers can use to deploy their application. GitHub Actions initiate the deployment. When an action triggers, Pulumi reads the credentials that were generated by the self-service application, allowing Pulumi to deploy new Kubernetes or Azure resources to the environment.&lt;/p&gt;
&lt;h2 id="watch-the-demo"&gt;Watch the demo&lt;/h2&gt;
&lt;p&gt;To illustrate how Elkjøp’s self-service platform works, Tomas presented a simplified demo application that’s based on Elkjøp’s production platform. The code for the application is available at &lt;a href="https://github.com/mastoj/pulumi-automation-demo"&gt;https://github.com/mastoj/pulumi-automation-demo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The demo is a TypeScript application that includes an API that provisions Azure and GitHub resources. Pulumi Automation API code is used to deploy new stacks by calling handler code, which is a Pulumi program that defines resources and outputs. The handler code can create Azure resource groups or GitHub repositories, and stack references are used so that outputs generated by the Azure resources can be stored in GitHub (e.g., resource group credentials).&lt;/p&gt;
&lt;p&gt;Ready to dive into how this works in detail? Watch the demo in the video below starting around 10:20.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/aoa_O-rh5KE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;p&gt;After watching the &lt;a href="https://youtu.be/aoa_O-rh5KE?list=PLyy8Vx2ZoWlpcvhSsUXdT5CXjRwAaM_My&amp;amp;t=620"&gt;demo&lt;/a&gt; of a self-service infrastructure platform, you can try it out for yourself by checking out the &lt;a href="https://github.com/mastoj/pulumi-automation-demo"&gt;demo code&lt;/a&gt;. You can also learn more about &lt;a href="https://www.pulumi.com/automation/"&gt;Pulumi Automation API&lt;/a&gt; in our &lt;a href="https://www.pulumi.com/docs/using-pulumi/automation-api/"&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you’re new to Pulumi, then follow our &lt;a href="https://www.pulumi.com/docs/get-started/"&gt;getting started guide&lt;/a&gt;.&lt;/p&gt;</description><author>George Huang</author><category>automation-api</category><category>aks</category><category>azure</category><category>infrastructure-as-code</category><category>kubernetes</category><category>typescript</category><category>pulumi-enterprise</category><category>cloud-engineering</category><category>github-actions</category></item><item><title>Launching Organization Access Tokens for the Pulumi Service</title><link>https://www.pulumi.com/blog/organization-access-tokens/</link><pubDate>Thu, 28 Apr 2022 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/organization-access-tokens/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/organization-access-tokens/index.png" /&gt;
&lt;p&gt;As enterprise adoption of the Pulumi Service has grown 350% over the last year, we&amp;rsquo;ve seen a strong customer demand for tools to manage automated Pulumi use cases such as CI/CD and Automation API at scale. Today we are launching Organization Access Tokens to empower our largest customers to manage automated workloads in a secure and collaborative manner.&lt;/p&gt;
&lt;p&gt;Enterprise and Business Critical customers of the Pulumi Service can now create Access Tokens tied to their Pulumi Organization. In addition to creating and managing Access Tokens tied to a user’s access (Personal Access Tokens), customers can utilize Organization Access Tokens, tokens which are not tied to a specific user. This feature is particularly useful for:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enterprise customers using SSO/SAML/SCIM, as it enables them to create Pulumi Service tokens not tied to identities within their identity provider (IdP)&lt;/li&gt;
&lt;li&gt;Garnering programmatic access for continuous integration and continuous delivery (CI/CD) tools and other automated processes&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&amp;rsquo;re excited to deliver one of the most &lt;a href="https://github.com/pulumi/pulumi-cloud-requests/issues/16"&gt;requested features from the community&lt;/a&gt; and a top ask from some of the largest customers using the Pulumi Service. The need to use Personal Access Tokens to manage automation and organization-specific resources can lead to some friction. When a user is deprovisioned or otherwise leaves the organization, their tokens in use no longer grant access and pipelines can become broken. Additionally, since Personal Access Tokens grant access to all resources and organizations they have access to, using personal tokens in organization automation pipelines leads to the pipeline having more privileged access than is necessary. We want to enable our customers to use the principle of least privilege. At launch, Organization Access Tokens will have write permissions to stacks in an Organization. We plan to continue to expand options for scoping this access based on feedback from our customers.&lt;/p&gt;
&lt;p&gt;See below what the experience looks like in the Pulumi Service:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/uploads/content/blog/organization-access-tokens/nav-org-tokens.gif" alt="Gif of tokens navigation"&gt;&lt;/p&gt;
&lt;p&gt;Users can now create an Organization Access Token in the Pulumi Service, give it a unique human-readable name (i.e. jenkins-ci-dev) and then use it to gain access to their Pulumi Service Organization. Only Organization Admins can create and manage Organization Access Tokens. As a security consideration for our customers, Organization Access Tokens cannot create other Organization Access Tokens. When a token is created they are provided a one-time token value. These tokens can only be deleted as an explicit action, either by clicking a button in the console or calling an API to delete the token. Creating or deleting an Organization Access Token will be logged as an event in the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/audit-logs/"&gt;Audit Logs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To determine which actions have been taken by which Organization Access Tokens, and to give greater clarity into specifically which tokens are conducting what operations, we have expanded Audit Log events to include information about the Organization Access Token that took the action. As an organization can have multiple Organization Access Tokens, this is a necessary step to ensure that accurate auditing can be done in the event that a token is compromised or is being used maliciously.&lt;/p&gt;
&lt;p&gt;See below how Organization Access Tokens appears in Audit Logs:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/uploads/content/blog/organization-access-tokens/audit-logs-org-tokens.gif" alt="Gif of tokens in Audit Logs"&gt;&lt;/p&gt;
&lt;p&gt;Learn more about using this feature in our &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/organization-access-tokens/"&gt;Access Token documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s explore how one of our customers is adopting Organization Access Tokens in the Pulumi Service. &lt;a href="https://faunadb.org/"&gt;Fauna&lt;/a&gt;, a Pulumi customer, is a distributed document relational database, delivered as a Cloud API. A native serverless architecture means no operations are required. Developers choose Fauna to build new applications faster and confidently scale existing ones across regions and the globe.&lt;/p&gt;
&lt;p&gt;Previously, Fauna created a user on the Pulumi Service under a shared email account and generated a Personal Access Token for that account to manage their organization wide access. This worked well as it meant the access token was not tied to a specific user. However, when they migrated to using the Pulumi Service single sign-on (SSO) for their Organization, this approach no longer worked since all Pulumi users were now attached to their SSO provider. “This will immediately solve the issues we have. This is an improvement over the process we’re using today,” said Ben Cohen, Software Engineer at Fauna.&lt;/p&gt;
&lt;p&gt;This feature is available to all Enterprise and Business Critical customers today, as well as on our 14-day trial. You can &lt;a href="https://app.pulumi.com/site/trial"&gt;start a trial&lt;/a&gt; or &lt;a href="https://www.pulumi.com/contact?form=sales"&gt;Contact Us&lt;/a&gt; about the Pulumi Service Enterprise Edition and Business Critical Edition to take it for a spin!&lt;/p&gt;</description><author>Devon Grove</author><category>features</category><category>pulumi-enterprise</category></item><item><title>Six Things You Might Not Know About the Pulumi Service</title><link>https://www.pulumi.com/blog/six-things-about-pulumi-service/</link><pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/six-things-about-pulumi-service/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/six-things-about-pulumi-service/index.png" /&gt;
&lt;p&gt;As a reader of this blog, you&amp;rsquo;ve probably heard of the &lt;a href="https://www.pulumi.com/product/pulumi-service/"&gt;Pulumi Service&lt;/a&gt;, the default state-management &lt;a href="https://www.pulumi.com/docs/iac/concepts/state-and-backends/"&gt;backend&lt;/a&gt; of the Pulumi CLI. If that&amp;rsquo;s the case, there&amp;rsquo;s also a good chance you&amp;rsquo;ve heard of a number of the Service&amp;rsquo;s key features, like helping you organize your &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/projects-and-stacks/"&gt;projects and stacks&lt;/a&gt;, collaborate with others with the help of &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/admin/organizations/"&gt;organizations&lt;/a&gt;, or handle sensitive data securely with built-in support for &lt;a href="https://www.pulumi.com/docs/concepts/secrets/"&gt;encrypted secrets&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What you might not know, though, is that we&amp;rsquo;re adding new features to the Pulumi Service all the time, and that some of these features can be fairly easy to miss. So in this post, we&amp;rsquo;ll highlight a handful of the features you might &lt;em&gt;not&lt;/em&gt; be aware of, and that we think make it even easier to manage your infrastructure with Pulumi.&lt;/p&gt;
&lt;p&gt;Let’s get started!&lt;/p&gt;
&lt;h2 id="feature-1-stack-tags"&gt;Feature 1: Stack Tags&lt;/h2&gt;
&lt;p&gt;The first thing we&amp;rsquo;ll cover is the &lt;a href="https://www.pulumi.com/docs/concepts/stack#stack-tags"&gt;Pulumi stack tags&lt;/a&gt; feature. Stack tags are key/value pairs that are associated with your Pulumi stack. You can use them for any number of purposes, from keeping things organized to even flagging whether or not it&amp;rsquo;s okay for a script to reclaim the stack&amp;rsquo;s resources.&lt;/p&gt;
&lt;p&gt;While you can create, edit, and remove stack tags using the Pulumi CLI (see &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_stack_tag"&gt;&lt;code&gt;pulumi stack tag&lt;/code&gt;&lt;/a&gt;), you can also do so in the Pulumi Console:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150612443-b0b187e1-6329-42ca-816f-01de1bc5d4ff.gif" alt="Adding and removing stack tags in the Service "&gt;&lt;/p&gt;
&lt;p&gt;Once set, you can quickly filter stacks on your organization’s Projects tab as well.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150613454-1554b763-2e8b-42e9-80ce-e629048bb1b9.png" alt="Filtering stacks by tag name"&gt;&lt;/p&gt;
&lt;h2 id="feature-2-link-updates-to-your-cicd-pipeline"&gt;Feature 2: Link Updates to your CI/CD pipeline&lt;/h2&gt;
&lt;p&gt;Another helpful thing the Pulumi Service can do is link the Pulumi stack update to the CI/CD job or run that was used to perform it, as well as to the specific source commit:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150612892-f8e84597-2ce2-4687-8acc-236a57f6c6a4.png" alt="The stack update header, showing links to GitHub source commit"&gt;&lt;/p&gt;
&lt;p&gt;When Pulumi updates a stack, it will store some information about the local machine state, such the current git SHA if the stack resides in a &lt;code&gt;git&lt;/code&gt; repository. It is with this data that the Pulumi Service links to relevant services where possible.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re curious to know all of the information Pulumi has for a stack update, you can navigate to the Environment tab for that update:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150613104-510c755f-180e-4f0c-a2cb-e9f9816649e6.png" alt="The Environment tab of a stack update"&gt;&lt;/p&gt;
&lt;h2 id="feature-3-custom-update-messages"&gt;Feature 3: Custom Update Messages&lt;/h2&gt;
&lt;p&gt;One of the most useful pieces of additional data stored with each update is the &lt;code&gt;message&lt;/code&gt; property. By default, Pulumi will use whatever the latest &lt;code&gt;git&lt;/code&gt; commit message is. But did you know you can customize that message from the command line?&lt;/p&gt;
&lt;p&gt;By passing the &lt;code&gt;--message&lt;/code&gt; (or &lt;code&gt;-m&lt;/code&gt;) flag to &lt;code&gt;pulumi up&lt;/code&gt;, you can provide a custom update message, which can help explain the context for why you made a particular infrastructure change:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pulumi up --message &lt;span class="s2"&gt;&amp;#34;Release the hounds\!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150614494-b1c6aef1-aed0-4de5-a815-f4f8ddcef48a.png" alt="An update in the Service with a custom message"&gt;&lt;/p&gt;
&lt;h2 id="feature-4-viewing-resource-changes"&gt;Feature 4: Viewing Resource Changes&lt;/h2&gt;
&lt;p&gt;Another thing you might have missed is that the Pulumi Service supports multiple views for a stack update&amp;rsquo;s logs.&lt;/p&gt;
&lt;p&gt;The standard view mimics the Pulumi CLI&amp;rsquo;s output. However, you can switch to the &lt;em&gt;Diff&lt;/em&gt; or &lt;em&gt;Diagnostic&lt;/em&gt; views, too.&lt;/p&gt;
&lt;p&gt;The Diff view displays all of the properties of modified resources, along with their previous/updated values. This can be helpful when trying to understand exactly what happened for a stack update.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150618931-5881cc70-36ab-4e46-b01c-53c13b8edfa1.png" alt="The diff view, showing resource-property changes"&gt;&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;Diagnostic view&lt;/em&gt; just outputs so-called “diagnostic” messages from the Pulumi update. Most commonly, this is where you will see the output of things like calls to JavaScript’s &lt;code&gt;console.log(...)&lt;/code&gt; or Python’s &lt;code&gt;print(...)&lt;/code&gt; functions. It&amp;rsquo;ll also include the output of dependent tools, like the output when building Docker containers.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150619125-8067b1c6-843d-4f52-999c-69f8e184870e.png" alt="The diagnostic view, showing the output of a Docker image build"&gt;&lt;/p&gt;
&lt;h2 id="feature-5-stack-resource-visualization"&gt;Feature 5: Stack Resource Visualization&lt;/h2&gt;
&lt;p&gt;Another cool feature of the Pulumi Service is being able to visualize a stack’s resources and their relationships to one another. This is a really important feature!&lt;/p&gt;
&lt;p&gt;One of the advantages of using an infrastructure as code tool like Pulumi is that you aren’t just creating a flat list of resources. Instead, by the virtue of how the code and resource graph is structured, you are building a graph of resources.&lt;/p&gt;
&lt;p&gt;This means that Pulumi has a semantic understanding of not only &lt;em&gt;what&lt;/em&gt; resources are in your stack but also how they relate to one another.&lt;/p&gt;
&lt;p&gt;If you navigate to a stack’s Resources tab, by default you see them listed in a table. You can filter this list by resource type, or by providing a custom filter:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150619318-9d452d1f-dc30-4907-af6a-9941c4c5fa68.png" alt="Filtering the resources list with a string matching the resource type (e.g., &amp;ldquo;bucket&amp;rdquo;)"&gt;&lt;/p&gt;
&lt;p&gt;However, in order to see the expanded resource graph, click the Graph View button. This will switch to rendering the resources as an interactive graph.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150619812-e32419b9-db31-489f-b132-df59b4da2c9f.png" alt="All resources in a stack, rendered as a graph"&gt;&lt;/p&gt;
&lt;p&gt;Notice here that the resources that are part of a &lt;a href="https://www.pulumi.com/docs/concepts/resources/#components"&gt;&lt;em&gt;component&lt;/em&gt;&lt;/a&gt; are grouped together. Also, you can double click on those nodes in the graph to expand or collapse them!&lt;/p&gt;
&lt;h2 id="feature-6-drilling-into-resource-properties"&gt;Feature 6: Drilling into Resource Properties&lt;/h2&gt;
&lt;p&gt;But you don’t need to just settle for a &amp;ldquo;top-level view&amp;rdquo; of your resources. You can click on any specific resource on the Resources tab, and see all of the properties of that resource.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150619959-7025d772-14e5-45a7-b660-78a1fc8d769b.png" alt="The Resource details view, showing all properties of a TargetGroup resource"&gt;&lt;/p&gt;
&lt;p&gt;This allows you to see all of the properties that Pulumi is tracking for that resource. It will also show you any relationships to other resources in the same stack.&lt;/p&gt;
&lt;p&gt;The Pulumi Service also links you to the resource’s cloud provider’s console where possible, so you can see even more details.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://user-images.githubusercontent.com/274700/150620181-be3e7a09-3630-4898-89fa-7c7b775e1d35.png" alt="Linking directly to an ECS Cluster resource in the AWS Console"&gt;&lt;/p&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.70121449e0dde6f8c01ff68423fffaa0336ecc73c7bbc87506404126694ca58c.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;Is your resource missing a link to the cloud provider console? With new services being launched from the myriad providers Pulumi supports every day, it’s hard to keep up. So if you would like us to add cloud provider links, please file an issue over in the &lt;a href="https://github.com/pulumi/console-requests/"&gt;pulumi/console-requests&lt;/a&gt; GitHub repository so we can update our database.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;There are plenty of other features to check out in the &lt;a href="https://www.pulumi.com/product/pulumi-service/"&gt;Pulumi Service&lt;/a&gt;, and we have exciting improvements on the way! As always, feel free to stop by the &lt;a href="https://slack.pulumi.com"&gt;Pulumi Community Slack&lt;/a&gt; to learn more, ask questions, or share anything cool you’re up to!&lt;/p&gt;</description><author>Chris Smith</author><author>Christian Nunciato</author><author>Laura Santamaria</author><category>announcements</category><category>features</category><category>cloud-engineering</category><category>policy-as-code</category><category>pulumi-cloud</category><category>infrastructure-as-code</category><category>pulumi-enterprise</category><category>continuous-delivery</category></item><item><title>Easily bring your team to Pulumi with SAML SSO and SCIM</title><link>https://www.pulumi.com/blog/pulumiup-bring-your-whole-team-to-pulumi/</link><pubDate>Tue, 20 Apr 2021 00:00:00 -0700</pubDate><guid>https://www.pulumi.com/blog/pulumiup-bring-your-whole-team-to-pulumi/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/pulumiup-bring-your-whole-team-to-pulumi/index.png" /&gt;
&lt;p&gt;Pulumi&amp;rsquo;s Cloud Engineering Platform helps teams of all sizes deliver and manage cloud apps and infrastructure. In the Pulumi Service, everyone on the team can see the infrastructure the team is responsible for, when it was last deployed, how it’s configured, and more. You can see a full breakdown of the infrastructure and understand how the team brings together individual cloud services to create applications. When you bring your teams together on Pulumi, you get a “single pane of glass” over all the cloud applications and infrastructure managed with Pulumi.&lt;/p&gt;
&lt;p&gt;Most teams larger than a few people define their team members, and the groups they’re a part of, using an Identity Provider (IdP) like &lt;a href="https://www.okta.com/products/single-sign-on/"&gt;Okta&lt;/a&gt;, Microsoft’s &lt;a href="https://azure.microsoft.com/en-us/services/active-directory/"&gt;Azure Active Directory&lt;/a&gt;, or &lt;a href="https://cloud.google.com/iam/"&gt;Google Cloud Identity &amp;amp; Access Management&lt;/a&gt;. Defining groups allows you to set policies based on logical groupings of teammates, such as giving different capabilities to individual developers versus infrastructure administrators. Pulumi works seamlessly with these IdPs (and many more) by providing &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/"&gt;Single Sign-On with SAML&lt;/a&gt; and &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/scim/"&gt;user and group synchronization via SCIM 2.0&lt;/a&gt;. When you use both SAML SSO and SCIM, you can manage the users who should have access to Pulumi and the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/teams/"&gt;Pulumi teams&lt;/a&gt; they belong to entirely from your IdP. Managing users and teams this way helps keep your organization more secure by ensuring a single point of control over the users who have access to manage and update your infrastructure. It also saves you time by centralizing all of your identity and access management workflows in your identity provider.&lt;/p&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.70121449e0dde6f8c01ff68423fffaa0336ecc73c7bbc87506404126694ca58c.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;SAML SSO and SCIM support are only available in &lt;strong&gt;Pulumi Enterprise&lt;/strong&gt;. See &lt;a href="https://www.pulumi.com/pricing/"&gt;pricing&lt;/a&gt; for more details.&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="saml-sso"&gt;SAML SSO&lt;/h2&gt;
&lt;p&gt;In a world of many cloud applications and service providers, IT departments can use single sign-on with SAML to make it easier for their employees to sign in and be productive. In addition, if an employee leaves, all of that employee’s access can be disabled from a single pane of glass, rather than having to manually update each application and service provider separately. Pulumi’s support for single sign-on with SAML provides this functionality. We support any IdP that implements the SAML 2.0 specification, with specific integrations for Azure Active Directory, Okta, and GSuite.&lt;/p&gt;
&lt;p&gt;To configure single sign-on with SAML for your Pulumi organization, use the guide that matches your IdP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/okta/"&gt;Okta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/aad/"&gt;Azure Active Directory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/gsuite"&gt;Google Cloud Identity &amp;amp; Access Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/sso"&gt;Generic guide (for all other IdPs)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="saml-in-console.png" alt="SAML configuration"&gt;
After configuring your IdP, any and all changes, either to your cloud applications and infrastructure, or your account&amp;rsquo;s settings, will be tracked and associated with the user who performed that activity. The end result is full end-to-end visibility and attestation for important changes to your Pulumi organization.&lt;/p&gt;
&lt;h2 id="user-and-group-synchronization-via-scim"&gt;User and group synchronization via SCIM&lt;/h2&gt;
&lt;p&gt;After you’ve configured single sign-on with SAML, you can take it one step further by synchronizing your users and groups using &lt;a href="https://developer.okta.com/docs/concepts/scim/"&gt;SCIM&lt;/a&gt;. Synchronization extends the power of single sign-on by enabling organization administrators to use their IdP to manage the users who have access to Pulumi and which teams each user belongs to. Granting and revoking user access is seamless and automatically provides the right level of permissions to critical infrastructure.&lt;/p&gt;
&lt;p&gt;To configure user and group synchronization via SCIM, use the guide that matches your IdP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/scim/okta/"&gt;Okta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/scim/azuread/"&gt;Azure Active Directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="distributed-least-privilege-access-permissions-model"&gt;Distributed, least privilege access permissions model&lt;/h2&gt;
&lt;p&gt;In addition to support for standards like SAML and SCIM, the Role-Based Access Control (RBAC) permissions model enables you to set up a least privilege access model for your infrastructure resources. In such a model, all access to infrastructure is specifically granted to individual users by creating &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/teams/"&gt;Teams&lt;/a&gt; that have the appropriate level of access (Read, Write, or Admin) to a set of &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/projects-and-stacks/"&gt;Stacks&lt;/a&gt;, then adding users to those teams. Team membership can be managed manually by Team Admins or automatically using SCIM group synchronization.&lt;/p&gt;
&lt;p&gt;Learn how to create Teams in the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/teams/"&gt;Teams docs&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;p&gt;The Pulumi Cloud Engineering Platform&amp;rsquo;s support for the SAML and SCIM standards for SSO, user synchronization, and group synchronization makes it easy to ensure every team member has the right access and the right permissions, allowing you to empower the right teammates while still applying the principle of least privilege. Here’s how to get started:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you’re an existing Pulumi customer, you can enable SAML &lt;a href="https://app.pulumi.com/pulumi/settings/saml"&gt;in your organization settings&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you’re new to Pulumi, &lt;a href="https://app.pulumi.com/site/trial"&gt;start your trial now&lt;/a&gt; or &lt;a href="https://www.pulumi.com/pricing#contact"&gt;contact sales to request a demo&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><author>Alex Mullans</author><category>pulumi-enterprise</category><category>security</category></item><item><title>Easily bring your team to Pulumi with SAML SSO and SCIM</title><link>https://www.pulumi.com/blog/easily-bring-your-team-to-pulumi/</link><pubDate>Wed, 24 Feb 2021 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/easily-bring-your-team-to-pulumi/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/easily-bring-your-team-to-pulumi/index.png" /&gt;
&lt;p&gt;The Pulumi Service helps teams of all sizes deliver and manage cloud apps and infrastructure. In the console, everyone on the team can see the infrastructure the team is responsible for, when it was last deployed, how it’s configured, and more. They can see a full breakdown of the infrastructure as well, so they can understand how the team brings together individual cloud services to create their applications. When you bring your teams together on the Pulumi Service, you can provide a “single pane of glass” over all the infrastructure that you manage with Pulumi.&lt;/p&gt;
&lt;p&gt;Most teams larger than a few people define their team members, and the groups they’re a part of, using an Identity Provider (IdP) like &lt;a href="https://www.okta.com/products/single-sign-on/"&gt;Okta&lt;/a&gt;, Microsoft’s &lt;a href="https://azure.microsoft.com/en-us/services/active-directory/"&gt;Azure Active Directory&lt;/a&gt;, or &lt;a href="https://cloud.google.com/iam/"&gt;Google Cloud Identity &amp;amp; Access Management&lt;/a&gt;. The Pulumi Service works seamlessly with these IdPs (and many more) by providing &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/"&gt;Single Sign-On with SAML&lt;/a&gt; and &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/scim/"&gt;user and group synchronization via SCIM 2.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you use both SAML SSO and SCIM, you can manage the users who should have access to Pulumi and the &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/teams/"&gt;Pulumi teams&lt;/a&gt; they belong to entirely from your IdP. Managing users and teams this way helps keep your organization more secure by ensuring a single point of control over the users who have access to manage and update your infrastructure. It also saves you time by centralizing all of your identity and access management workflows in your identity provider.&lt;/p&gt;
&lt;h2 id="saml-sso"&gt;SAML SSO&lt;/h2&gt;
&lt;p&gt;In a world of many cloud applications and service providers, IT departments can use single sign-on with SAML to make it easier for their employees to sign in and be productive. In addition, if an employee leaves, all of that employee’s access can be disabled from a single pane of glass, rather than having to manually update each application and service provider separately. The Pulumi Service&amp;rsquo;s support for single sign-on with SAML provides this functionality. We support most IdPs that implement the SAML 2.0 specification.&lt;/p&gt;
&lt;p&gt;To configure single sign-on with SAML for your Pulumi organization, use the guide that matches your IdP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/okta/"&gt;Okta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/aad/"&gt;Azure Active Directory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/gsuite"&gt;Google Cloud Identity &amp;amp; Access Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/saml/sso"&gt;Generic guide (for all other IdPs)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="saml-in-console.png" alt="SAML configuration"&gt;&lt;/p&gt;
&lt;h2 id="user-and-group-synchronization-via-scim"&gt;User and group synchronization via SCIM&lt;/h2&gt;
&lt;p&gt;After you’ve configured single sign-on with SAML, you can take it one step further by synchronizing your users and groups using &lt;a href="https://developer.okta.com/docs/concepts/scim/"&gt;SCIM&lt;/a&gt;. Synchronization extends the power of single sign-on by enabling organization administrators to use their IdP to manage the users who have access to the Pulumi Service and which Pulumi teams each user is a member of. Granting and revoking user seat licenses is seamless and easily provides the right level of permissions to critical infrastructure.&lt;/p&gt;
&lt;p&gt;To configure user and group synchronization via SCIM, use the guide that matches your IdP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/scim/okta/"&gt;Okta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/pulumi-cloud/access-management/scim/azuread/"&gt;Azure Active Directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;p&gt;The Pulumi Cloud’s support for the SAML and SCIM standards for SSO, user synchronization, and group synchronization make it easy to ensure every team member has the right access and the right permissions. Here’s how to get started:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you’re an existing Pulumi customer, you can enable SAML &lt;a href="https://app.pulumi.com/pulumi/settings/saml"&gt;in your organization settings&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you’re new to Pulumi, &lt;a href="https://app.pulumi.com/site/trial"&gt;start your trial now&lt;/a&gt; or &lt;a href="https://www.pulumi.com/pricing#contact"&gt;contact sales to request a demo&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><author>Alex Mullans</author><category>pulumi-enterprise</category><category>security</category></item><item><title>Pulumi is SOC 2 Certified</title><link>https://www.pulumi.com/blog/pulumis-soc-2-milestone/</link><pubDate>Thu, 07 Jan 2021 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/pulumis-soc-2-milestone/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/pulumis-soc-2-milestone/index.png" /&gt;
&lt;h2 id="pulumis-commitment"&gt;Pulumi’s Commitment&lt;/h2&gt;
&lt;p&gt;Pulumi is committed to operational excellence for our customers and one of the ways that we decided to demonstrate this was by completing our SOC 2 Type 2 Audit. After a lot of hard work these past few months, we are pleased to announce that Pulumi is now &lt;a href="https://www.aicpa-cima.com/resources/landing/system-and-organization-controls-soc-suite-of-services"&gt;SOC 2&lt;/a&gt; compliant!&lt;/p&gt;
&lt;p&gt;The audit involved the entire Pulumi team. We needed to have proper controls in place across the organization and ensure that our key processes were documented and exercised. In addition, we reviewed our vendor selection process and made sure that all of our key partners were compliant with SOC as well. Our team used the overall process as an opportunity to review our overall governance and risk management procedures. Interestingly, the change in our work environment caused by Covid-19 actually helped us stress some of our process and policies, since we were forced to work remotely, much as if we had any type of interesting “event” at our headquarters.&lt;/p&gt;
&lt;p&gt;Of course, we spent a large amount of time reviewing the &lt;a href="https://www.pulumi.com/security/"&gt;security of our service&lt;/a&gt;. Security is already baked into our culture, with processes around training, code reviews, and the like, however, there’s no doubt this process helped us “up our game.” The policies that we already had in place (encryption of data at rest and in transit, auditing, logging, secure backup, etc.) gave us a strong foundation, however, as we reviewed key areas we found several areas for simplification and improvement.&lt;/p&gt;
&lt;h2 id="the-soc-2-journey"&gt;The SOC 2 Journey&lt;/h2&gt;
&lt;p&gt;As an organization, SOC 2 requires us to promise that we abide by well-documented policies, procedures, and operational controls and to prove it to an accredited firm that reviews our operational discipline for several months. We were fortunate to find a great partner that was a superb resource as we initiated our first report. The auditors had to review a tremendous amount of data, much of it over shared screens in Zoom. Their experience also helped us think about how we can continuously improve in several key areas.&lt;/p&gt;
&lt;p&gt;We decided to use a third party tool to help with the process. In retrospect, this was one of the best decisions we made, and picking a tool that fits with your organization is hugely important. Our engineering culture definitely believes in “get clean, stay clean” and a great tool that automates many of the routine checks is indispensable. In addition, having a central dashboard that lets you know “where you are” in your journey is incredibly valuable and can really help motivate the team. The tool also helped us find a number of enhancements that go above and beyond what SOC strictly requires. For example, we created a network diagram, which, while not strictly a SOC requirement, was a suggestion from the tool. Finally, all team members now have agent software on their laptops that helps maintain key standards that we’ve chosen for our security profile.&lt;/p&gt;
&lt;p&gt;In addition, much of the operational excellence for SOC certification requires great DevOps discipline. Here, we had a huge insider’s advantage! We were able to use Pulumi itself to automate key procedures required by the process.&lt;/p&gt;
&lt;h2 id="going-forward"&gt;Going Forward&lt;/h2&gt;
&lt;p&gt;While we already had the key cultural attributes required for operational excellence, our SOC 2 journey was a great way to reinforce the importance of this to the entire team. Security, privacy, and resiliency are everyone’s job!&lt;/p&gt;
&lt;p&gt;We’ve added additional training, and some templates and processes that will help us do an even better job in the future.&lt;/p&gt;
&lt;p&gt;We have a leadership team that reviews key areas of the SOC profile quarterly, with each quarter having a special focus. For example, one quarter may focus on security, while the next may zero-in on disaster recovery. The meetings are documented and any work items identified go onto our team’s task list.&lt;/p&gt;
&lt;p&gt;Most importantly, the journey isn’t over! Pulumi will continue to evolve. The SOC standards will continue to evolve. Industry tools and best practices will continue to evolve. We’ve come a long way since we started our SOC 2 journey and we’re committed to continuing to improve our operational excellence every day.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re interested in learning more about how we approach security at Pulumi or have questions about our SOC 2 process, please &lt;a href="https://www.pulumi.com/contact/"&gt;reach out&lt;/a&gt;. We&amp;rsquo;re happy to share what we&amp;rsquo;ve learned along the way.&lt;/p&gt;</description><author>Eric Rudder</author><category>pulumi-enterprise</category></item><item><title>Auditing Your Organization's Infrastructure as Code Activity</title><link>https://www.pulumi.com/blog/auditing-your-organizations-infrastructure-as-code-activity/</link><pubDate>Thu, 20 Feb 2020 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/auditing-your-organizations-infrastructure-as-code-activity/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/auditing-your-organizations-infrastructure-as-code-activity/index.png" /&gt;
&lt;p&gt;We are excited to announce the release of Audit Logs on
&lt;a href="https://app.pulumi.com/signin"&gt;Pulumi&lt;/a&gt; for Enterprise organizations.
Audit logs enable you to track the activity of users within an
organization. They attempt to answer what a user did, when
they did it and where. They help answer these questions
by recording user actions.&lt;/p&gt;
&lt;p&gt;Pulumi&amp;rsquo;s audit logs allow you to account for the activity your
users are taking within your organization. These logs are available to
organizations with an Enterprise level subscription. The logs are immutable and
and record all user actions. Auditing makes the activity
of members in an organization attributable.
The logs capture the UNIX timestamp of the event, the user
who invoked the action, the event that took place, and the source IP
of the call the user made.&lt;/p&gt;
&lt;h2 id="using-pulumi-audit-logs"&gt;Using Pulumi Audit Logs&lt;/h2&gt;
&lt;p&gt;Audit logs are available to organizations with an Enterprise level subscription
only. If you are an organization administrator, you can view your organization&amp;rsquo;s audit logs,
by selecting your organization from the organization drop down. Then click on the settings tab.
On the left nav-bar you should see a tab called Audit Logs. Clicking here will allow you to view
the most recent audit logs for your organization.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.pulumi.com/blog/auditing-your-organizations-infrastructure-as-code-activity/auditlogs.png" alt="auditlogs"&gt;&lt;/p&gt;
&lt;p&gt;This will show the most recent events in descending order. You can
also filter logs by a particular user by clicking on the user&amp;rsquo;s avatar. Doing so will
filter out the events performed by the user you selected.&lt;/p&gt;
&lt;p&gt;We are excited to make this feature available to our users.
Get started with audit logs on &lt;a href="https://app.pulumi.com/signin"&gt;Pulumi&lt;/a&gt; today.&lt;/p&gt;</description><author>Sean Holung</author><category>features</category><category>pulumi-enterprise</category><category>audit-logs</category></item></channel></rss>