ID フェデレーションのための Heroku Enterprise Team の設定
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年01月27日(木)
Enterprise Team は以前、Heroku Org や Heroku Organization (または単純に、Orgs や Organizations) と呼ばれていました。これは単に名前の変更であり、どの機能または設定にも影響を与えません。すべての CLI コマンドも “Org” の単語を置き換えるように更新していますが、現在の Org コマンドは、移行が完了するまでサポートされます。
Heroku Enterprise Team は、SAML 標準を実装することによって ID フェデレーションをサポートしています。この機能を使用すると、さまざまなビジネスシステムへの従業員のアクセスを管理している可能性がある既存の ID 管理ソリューションでの成功した認証に基づいて Heroku Enterprise Team へのアクセスを管理できます。この統合では、Heroku はサービスプロバイダーの役割を果たし、ID プロバイダー (IdP) にアサーションを要求して受信する消費エンティティです。
この設定には 2 つの部分があります。Heroku Enterprise Team は、IdP に関する情報を使用して設定します。また、IdP を、認証を IdP に依存するサービスプロバイダーとしての Heroku からリクエストを受け付け、応答するように設定する必要があります。
この統合は標準に基づいているため、さまざまな IdP が同じ設定の詳細を必要としたり、提供したりしますが、それらを設定および取得するための実際の手順は異なります。この記事では、Salesforce Identity を ID プロバイダーとして使用する設定について説明します。
立ち上げ
Heroku Enterprise Team が作成されたときは、一部のユーザーのみが管理者として追加されます。管理者は、まず Heroku のユーザー名とパスワードを使用して Enterprise Team にログインしてから、ID フェデレーションを設定する必要があります。Enterprise Team が ID フェデレーション用に設定された後、ID プロバイダー経由で正常に認証されたユーザーはメンバーとして自動的に追加されます。その後、アプリアクセス許可を使用して、それらのユーザーに特定のアプリに対するその他のアクセス許可を付与できます。
Heroku Enterprise Team の設定
必要な設定情報
各 Enterprise Team は、独立したサービスプロバイダー (依拠当事者) として設定されます。Enterprise Team を依拠当事者として設定するには、ID プロバイダーからの次の情報が必要になります。
ログインリダイレクト URL: これは、ID プロバイダーが認証のためのリダイレクトを受信する URL です。ユーザーが Heroku Enterprise Team にログインするか、または Enterprise Team によって所有されているリソースにアクセスしようとすると、この URL にリダイレクトされます。
X509 IdP 証明書: Heroku はこの証明書を使用して、IdP から送信されたアサーションの正当性を検証します。これは、IdP が Heroku に送信するアサーションに署名するために使用する鍵のペアの公開鍵を表します。
Salesforce 組織からの必要な設定の取得
ID フェデレーションは SAML 2.0 標準に基づいており、さまざまな ID プロバイダーを使用して設定できます。Salesforce Identity は、エンドツーエンドの設定を示す例としてのみ使用されています。
Salesforce Enterprise Edition 以上を使用している既存の顧客には、その Salesforce 組織の一部として Salesforce Identity がすでに存在しています。まず、Salesforce 組織にログインし、一番上のメニューバーにある Setup
(設定) をクリックして管理者の設定ページに移動します。
Salesforce 組織が ID プロバイダーとして設定されていることを確認しましょう。前提条件として、Administer > Domain Management > My Domain
(管理 > ドメイン管理 > マイドメイン) で組織にカスタムドメインが設定されている必要があり、また Administer > Security Controls > Certificate and Key Management
(管理 > セキュリティ制御 > 証明書と鍵管理) で証明書も作成されている必要があります。
ここで、Security Controls
(セキュリティ制御) の下の Identity Provider
(ID プロバイダー) を選択します。ID プロバイダーが有効になっていない場合は、Enable Identity Provider
(ID プロバイダーの有効化) ボタンをクリックし、すでに作成した証明書を使用して ID プロバイダーを設定します。
Download Metadata
(メタデータのダウンロード) ボタンをクリックすることにより、IdP メタデータを XML ファイルとしてダウンロードできます。このファイルには、前に概説した設定の詳細がすべて含まれています。サンプルファイルを次に示します。
<?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://sushi-dev-ed.my.salesforce.com" validUntil="2025-09-09T23:17:44.942Z">
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIEZDCCA0ygAwIBAgIOAU+0UEpTAAAAAECZ07YwDQYJKoZIhvcNAQELBQAwejESMBAGA1UEAwwJc3VzaGlfaWRwMRgwFgYDVQQLDA8wMEQ2MTAwMDAwMDZ0UGQxFzAVBgNVBAoMDlNhbGVzZm9yY2UuY29tMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQswCQYDVQQIDAJDQTEMMAoGA1UEBhMDVVNBMB4XDTE1MDkwOTIyNTMyNFoXDTE3MDkwOTEyMDAwMFowejESMBAGA1UEAwwJc3VzaGlfaWRwMRgwFgYDVQQLDA8wMEQ2MTAwMDAwMDZ0UGQxFzAVBgNVBAoMDlNhbGVzZm9yY2UuY29tMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQswCQYDVQQIDAJDQTEMMAoGA1UEBhMDVVNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoibkw0wAIvfuG9DZfDCpVrbizZSCrBzdHaCJ4II7/YXjH1M+tWp9L7vcXkegpPRWGlXOrYl+A6k96MSwdLU3d2HGJmrhz+Pur0rq4vpOD3cV4zh9fDtICacL0F9QLMOAsIT0ct1LgEh6usKvmNE1Z5DPfaZAaKAYdYepBDQMAT9ZIm1s4jqMzyQfAQBnVBOxIL6F9GU5Ki40yygRUc0YzbeKEqQR7WxfGACDCNXbm/0drN5Vi6YVtRrGQXIBSyAly72gOowoGBYNHhzsQEROxrKTKqdpjF4JcmMdU4qTI8++zNcJ6YZDdfx6p2+L6wWclv9tlkGsMcpC5yKuV+Pg7wIDAQABo4HnMIHkMB0GA1UdDgQWBBSO7PhFdpH72WQUpMXqmoqziOaClzAPBgNVHRMBAf8EBTADAQH/MIGxBgNVHSMEgakwgaaAFI7s+EV2kfvZZBSkxeqairOI5oKXoX6kfDB6MRIwEAYDVQQDDAlzdXNoaV9pZHAxGDAWBgNVBAsMDzAwRDYxMDAwMDAwNnRQZDEXMBUGA1UECgwOU2FsZXNmb3JjZS5jb20xFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xCzAJBgNVBAgMAkNBMQwwCgYDVQQGEwNVU0GCDgFPtFBKUwAAAABAmdO2MA0GCSqGSIb3DQEBCwUAA4IBAQCALrk9rW+YGd1h6dBBNMP3IwYnmOFHz1e2pVzehu7PZlkZbKmQOvHObj/OCsUxvGiooTMDLUGHZdCKHLoM6+O5MPFGYGPzJuU/+jyD7OSzYsA+k29B6AY2J9eWFifdjlmgLHql2xgL+BFVhINE3xTcn/DXAwm0hj02TWK3xv1ArqX0IH6/s7pGtREfLMQA1Amo7m2SqHo9i0sF5/cinfn+xGJTrzc7PnUwmVcLxx2r5m6+DJ5GnChvwLQoUa33K+OXckiVyEwVPokpb4RGMbugWuBU7AEINrqSl7PzYhvkVZKVztNTrc3MiceIGJCcYpJpB7fviYW+KZoz8T5WlXc3</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://sushi-dev-ed.my.salesforce.com/idp/endpoint/HttpPost"/>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://sushi-dev-ed.my.salesforce.com/idp/endpoint/HttpRedirect"/>
</md:IDPSSODescriptor>
</md:EntityDescriptor>
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
バインディングを含む SingleSignOnService
要素は、ログインリダイレクト URL を表しています。
HTTP-POST URL ではなく、HTTP-Redirect URL を使用することを忘れないでください。
Download Certificate
(証明書のダウンロード) ボタンをクリックして、証明書を個別にダウンロードすることもできます。これは、書式が正しく保持されるほか、ダウンロードされたファイルの内容を Heroku Enterprise Team の設定ページに簡単にカットアンドペーストできるため推奨されます。
セットアップ
必要なすべての設定情報を取得したら、Heroku ダッシュボードにある Enterprise Team の Settings
(設定) ページに移動します。Identity Federation
(ID フェデレーション) セクションで、設定を行うボタンをクリックします。ログインリダイレクト URL (https://balansubr-dev-ed.my.salesforce.com/idp/endpoint/HttpRedirect
など) をカットアンドペーストします。上記でダウンロードしたメタデータファイル内の IdP 証明書は、書式設定してから設定に追加する必要があります。代わりに、ダウンロードした証明書ファイルを使用します。それをテキストエディタで開き、その内容を IdP certificate
(IdP 証明書) テキストエリアにカットアンドペーストします。
保存した設定が検証されると、ID フェデレーションが Enterprise Team に対して有効になり、Heroku の設定が完了します。これで、ユーザーが IdP 経由で Heroku Enterprise Team にログインするために使用する必要のある特定の URL が表示されるようになります。
ID プロバイダーの設定
必要な設定情報
通常、新しいサービスプロバイダーを登録するには ID プロバイダーに次のものが必要です。ID フェデレーションが設定され、有効になっている Heroku Enterprise Team に対して表示される Heroku ログイン URL から必要な URL を構成できます。
開始 URL: これは、ユーザーが Enterprise Team にログインする URL です。これは
https://sso.heroku.com/saml/<your Enterprise Team name>/init
のようになります。これは通常、ユーザーが内部ポータルのリンクをクリックして Heroku Enterprise Team にアクセスする、IdP 主導のログインシナリオに使用されます。エンティティ ID: これは、Heroku が認証のためにユーザーを IdP にリダイレクトするときに IdP に送信する一意識別子です。すべての Enterprise Team が独自のエンティティ ID を受け取り、それは
https://sso.heroku.com/saml/<your Enterprise Team name>
の形式を取ります。ACS (Assertion Consumer Service) URL: これは、IdP がアサーションをポストする先の URL です。これは
https://sso.heroku.com/saml/<my Enterprise Team name>/finalize
の形式を取ります。発行者: これは、アサーションを発行しているエンティティを識別します。Salesforce 組織では、これはデフォルトで Salesforce 組織のドメイン URL になります。これは変更しないでおくことができます。
名前 ID 形式: これは、サービスプロバイダー (Heroku) と IdP がユーザーレコードを一意に表しているとして同意した形式です。Heroku は、IdP に記録されているユーザーのメールアドレスである
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
を使用します。Heroku は、このメールアドレスを使用して、IdP に正常に認証されるユーザーの一意の内部ユーザーレコードを作成します。件名タイプ: このフィールドは、ユーザーの ID がアサーションでどのように記述されるかを示します。Heroku は、これが IdP に記録されているユーザーのユーザー名であることを要求します。
リクエスト署名証明書 (オプション): これは、IdP がサービスプロバイダーから来た認証リクエストを検証するために使用する証明書です。現在、Heroku は認証リクエストに署名しません。
Heroku Enterprise Team の IdP としての Salesforce 組織の設定
このセクションでは、Heroku Enterprise Team をコネクテッドアプリとして設定することによって依拠サービスプロバイダーとして設定する方法を確認します。Salesforce 組織にログインし、一番上のメニューバーにある Setup
(設定) をクリックして管理者の設定ページに移動します。
ID フェデレーションは SAML 2.0 標準に基づいており、さまざまな ID プロバイダーを使用して設定できます。Salesforce Identity は、エンドツーエンドの設定を示す例としてのみ使用されています。
サービスプロバイダーとしての Heroku Enterprise Team の登録
ここで、Security Controls
(セキュリティ制御) の下の Identity Provider
(ID プロバイダー) を選択します。Service Providers
(サービスプロバイダー) セクションで、サービスプロバイダーを表す新しいコネクテッドアプリを作成できるリンクをクリックします。また、サイドバーの Build
(ビルド) で Create > Apps
(作成 > アプリ) を選択し、「Connected Apps」 (コネクテッドアプリ) セクションで New
(新規) を選択してこのページに移動することもできます。
New Connected App
(新しいコネクテッドアプリ) ページで、サービスプロバイダー (この場合は Heroku Enterprise Team) に関するすべての関連情報を入力できます。SAML 関連の設定はすべて Web App Settings
(Web アプリ設定) セクションにあります。Enable SAML
(SAML の有効化) チェックボックスをオンにしたことを確認してください。
前のセクションで説明した設定項目に加えて、このページでは IdP を、リクエスト署名を検証したり、SAML レスポンスを暗号化したりするように設定することもできます。これらのチェックボックスはオフのままにします。Save
(保存) をクリックすると、Heroku がサービスプロバイダーとして設定されます。Heroku Enterprise Team へのすべてのログインリクエストが Salesforce 組織にリダイレクトされるようになりました。Heroku 上に複数の Enterprise Team がある場合、各 Heroku Enterprise Team には固有の SAML 設定があるため、それらを複数のコネクテッドアプリとして設定することに注意してください。
ユーザープロファイルでの Heroku Enterprise Team へのアクセスの有効化
今設定したコネクテッドアプリは、ユーザーに割り当てるプロファイルにも追加する必要があります。Heroku Enterprise Team を表すコネクテッドアプリへのアクセスを許可するように設定されたプロファイルが割り当てられているユーザーだけが、その Heroku Enterprise Team にアクセスするために IdP に正常に認証されます。Manage Users
(ユーザーの管理) で、Profiles
(プロファイル) を選択します。Enterprise Team にアクセスできるようにする開発者やその他のユーザーに割り当てるプロファイルの横にある Edit
(編集) をクリックします。Connected App Access
(コネクテッドアプリのアクセス) セクションで、Enterprise Team に対応するコネクテッドアプリがオンになっていることを確認します。異なるプロファイルで同じコネクテッドアプリ/Heroku Enterprise Team を有効にすることができます。
コネクテッドアプリとして今追加した Heroku Enterprise Team は、アプリランチャーにも表示されます。ログインしているユーザーがそれをクリックすると、ユーザー名とパスワードを再び指定しなくても Enterprise Team の Heroku ダッシュボードにログインします。
ID フェデレーションされた Enterprise Team でのユーザーの管理
ID フェデレーション Enterprise Team の動作は、ユーザーがどのようにプロビジョニングおよび管理されるかによって異なります。
既存のユーザー
既存の Enterprise Team で ID フェデレーションを有効にすることができます。その後、Enterprise Team の Heroku ログイン URL を現在のメンバーと共有し、それらのメンバーに以降はその URL 経由でログインするように指示できます。
既存の Enterprise Team ユーザー (管理者を含む) が IdP 経由で初めてログインすると、そのユーザーはフェデレーションユーザーに完全に切り替えられます。Heroku のユーザー名とパスワードを使用して Enterprise Team にログオンすることはできなくなります。この切り替えは、IdP によって提供されたメールアドレスが、Heroku に直接ログインするために使用するメールアドレスに一致するユーザーに対して自動的に実行されます。これらのユーザーは、引き続きそのメールアドレスと Heroku パスワードを使用して Heroku にログインし、自分の個人用アプリにアクセスできますが、IdP 経由でログインしない限り、Enterprise Team にはアクセスできなくなることに注意してください。
新しいメンバー
Heroku と IdP の両方で ID フェデレーションの設定が完了したら、この URL を Enterprise Team の対象ユーザーに配布するか、またはシングルサインオンポータルなどの共有された領域に置くことができます。IdP 経由で Enterprise Team に正常にログインしたユーザーは、メンバーとして自動的に追加されます。Enterprise Team にアクセスできるユーザーを制限する場合は、ID プロバイダー固有の機能を使用してそれを適用できます。たとえば、Salesforce Identity を使用している場合は、ユーザーごとに異なるプロファイルを割り当て、一部のプロファイルにのみ (上記のコネクテッドアプリとして設定した) Heroku Enterprise Team へのアクセスを含めることができます。
混在モード
デフォルトでは、ID フェデレーション用に設定された Heroku Enterprise Team には、IdP 経由でログオンするメンバーと、Heroku のユーザー名とパスワードを使用して直接ログオンするメンバーを含めることができます。これにより、IdP にユーザーレコードが存在しない可能性がある一時的な業者などのユーザーをサポートできます。
IdP 経由のアクセスのみを許可したい場合は、Enterprise Team からすべての非フェデレーションユーザーを削除できます。Enterprise Team のアクセスページには、どのユーザーがフェデレーションされているかが表示されます。たとえば、IdP 経由のログインと、Heroku のユーザー名とパスワードを使用して直接ログインしているユーザーです。後者の一連のユーザーの場合は、その 2FA ステータスも表示されます。
すべての非フェデレーションユーザーを削除すると、IdP が使用不可になった場合は、だれも Enterprise Team にアクセスできなくなることに注意してください。このシナリオから保護したい場合は、特殊な管理者ユーザーを追加し、そのユーザーを非フェデレーションのままにすることができます。その後、必要に応じて、IdP 関連の問題を解決するまでこのユーザーとして直接ログインし、Enterprise Team の ID フェデレーションを無効にすることができます。