Service Fabric クラスターのセキュリティに関するシナリオService Fabric cluster security scenarios

Azure Service Fabric クラスターは、ユーザーが所有するリソースの 1 つです。An Azure Service Fabric cluster is a resource that you own. 承認されていないユーザーが接続できないように、クラスターをセキュリティで保護する必要があります。It is your responsibility to secure your clusters to help prevent unauthorized users from connecting to them. クラスターで実稼働ワークロードを実行している場合、セキュリティで保護されたクラスターは特に重要です。A secure cluster is especially important when you are running production workloads on the cluster. セキュリティで保護されていないクラスターを作成することはできますが、パブリック インターネットに管理エンドポイントを公開している場合に、匿名ユーザーがそのクラスターに接続できるようになります。It is possible to create an unsecured cluster, however if the cluster exposes management endpoints to the public internet, anonymous users can connect to it. セキュリティで保護されていないクラスターは、運用ワークロードでサポートされません。Unsecured clusters are not supported for production workloads.

この記事では、Azure クラスターとスタンドアロン クラスターのセキュリティ シナリオの概要と、その実装に使用できる多様なテクノロジについて説明します。This article is an overview of security scenarios for Azure clusters and standalone clusters, and the various technologies you can use to implement them:

  • ノード間のセキュリティNode-to-node security
  • クライアントとノードの間のセキュリティClient-to-node security
  • ロール ベースのアクセス制御 (RBAC)Role-Based Access Control (RBAC)

ノード間のセキュリティNode-to-node security

ノード間のセキュリティでは、クラスター内の VM やコンピューターの間の通信をセキュリティで保護できます。Node-to-node security helps secure communication between the VMs or computers in a cluster. このセキュリティ シナリオでは、クラスターへの参加が許可されているコンピューターのみが、クラスター内でホストされているアプリケーションとサービスに参加できます。This security scenario ensures that only computers that are authorized to join the cluster can participate in hosting applications and services in the cluster.

ノード間通信の図

Azure で実行するクラスターおよび Windows で実行するスタンドアロン クラスターのいずれにも、証明書セキュリティまたは Windows セキュリティ (Windows Server コンピューターの場合) を利用できます。Clusters running on Azure and standalone clusters running on Windows both can use either certificate security or Windows security for Windows Server computers.

ノード間の証明書セキュリティNode-to-node certificate security

Service Fabric では、クラスターを作成するときにノード タイプの構成で指定した X.509 サーバー証明書を使用します。Service Fabric uses X.509 server certificates that you specify as part of the node-type configuration when you create a cluster. これらの証明書の概要とその入手または作成方法はこの記事の最後に記載されています。At the end of this article, you can see a brief overview of what these certificates are and how you can acquire or create them.

証明書セキュリティは、Azure Portal、Azure Resource Manager テンプレート、またはスタンドアロン JSON テンプレートを使用して、クラスターを作成する際に設定します。Set up certificate security when you create the cluster, either in the Azure portal, by using an Azure Resource Manager template, or by using a standalone JSON template. Service Fabric SDK の既定の動作では、有効期限が最も先の証明書がデプロイおよびインストールされます。以前の動作では、手動で開始されるロールオーバーを許可するために、プライマリおよびセカンダリの証明書の定義が認められていました。新しい機能でなく、以前の機能を使用することは推奨されません。Service Fabric SDK's default behavior is to deploy and install the certificate with the furthest into the future expiring certificate; the classic behavior allowed the defining of primary and secondary certificates, to allow manually initiated rollovers, and is not recommended for use over the new functionality. 使用されるプライマリ証明書は、有効期限が最も先であり、クライアントとノードの間のセキュリティに設定した管理用クライアント証明書および読み取り専用クライアント証明書とは異なるものである必要があります。The primary certificates that will be use has the furthest into the future expiring date, should be different from the admin client and read-only client certificates that you set for client-to-node security.

Azure 用にクラスターで証明書セキュリティを設定する方法については、「Azure Resource Manager を使用して Service Fabric クラスターを作成する」を参照してください。To learn how to set up certificate security in a cluster for Azure, see Set up a cluster by using an Azure Resource Manager template.

スタンドアロン Windows Server クラスター用にクラスターで証明書セキュリティを設定する方法については、「X.509 証明書を使用した Windows でのスタンドアロン クラスターの保護」を参照してください。To learn how to set up certificate security in a cluster for a standalone Windows Server cluster, see Secure a standalone cluster on Windows by using X.509 certificates.

ノード間の Windows セキュリティNode-to-node Windows security

スタンドアロン Windows Server クラスター用に Windows セキュリティを設定する方法については、「Windows セキュリティを使用して Windows 上のスタンドアロン クラスターを保護する」を参照してください。To learn how to set up Windows security for a standalone Windows Server cluster, see Secure a standalone cluster on Windows by using Windows security.

クライアントとノードの間のセキュリティClient-to-node security

クライアントとノードの間のセキュリティでは、クライアントの認証を行い、クラスター内のクライアントと個々のノードの間の通信をセキュリティで保護できます。Client-to-node security authenticates clients and helps secure communication between a client and individual nodes in the cluster. この種類のセキュリティでは、権限のあるユーザーのみが、クラスターと、クラスターにデプロイされたアプリケーションにアクセスできます。This type of security helps ensure that only authorized users can access the cluster and the applications that are deployed on the cluster. クライアントは、Windows セキュリティ資格情報または証明書のセキュリティ資格情報を通じて一意に識別されます。Clients are uniquely identified through either their Windows security credentials or their certificate security credentials.

クライアントとノードの間の通信の図

Azure で実行するクラスターおよび Windows で実行するスタンドアロン クラスターのいずれにも、証明書セキュリティまたは Windows セキュリティを利用できます。Clusters running on Azure and standalone clusters running on Windows both can use either certificate security or Windows security.

クライアントとノードの間の証明書セキュリティClient-to-node certificate security

クライアントとノードの間の証明書セキュリティは、Azure Portal、Resource Manager テンプレート、またはスタンドアロン JSON テンプレートを使用して、クラスターを作成する際に設定します。Set up client-to-node certificate security when you create the cluster, either in the Azure portal, by using a Resource Manager template, or by using a standalone JSON template. 証明書を作成するには、管理用クライアント証明書またはユーザー クライアント証明書を指定する必要があります。To create the certificate, specify an admin client certificate or a user client certificate. 指定する管理用クライアント証明書とユーザー クライアント証明書は、ベスト プラクティスとしてノード間のセキュリティに指定するプライマリ証明書とセカンダリ証明書とは異なります。As a best practice, the admin client and user client certificates you specify should be different from the primary and secondary certificates you specify for node-to-node security. クラスター証明書には、クライアント管理用証明書と同じ権限が与えられます。Cluster certificates have the same rights as client admin certificates. ただし、セキュリティのベスト プラクティスとしては、この証明書はクラスターのみが使用し、管理ユーザーは使用しないことをお勧めします。However, they should be used only by cluster and not by administrative users as a security best practice.

管理用証明書を使用してクラスターに接続するクライアントには、管理機能へのフル アクセス権があります。Clients that connect to the cluster by using the admin certificate have full access to management capabilities. 読み取り専用ユーザー クライアント証明書を使用してクラスターに接続するクライアントには、管理機能に対する読み取りアクセス権しかありません。Clients that connect to the cluster by using the read-only user client certificate have only read access to management capabilities. これらの証明書は、この記事で後述する RBAC に使用されます。These certificates are used for the RBAC that is described later in this article.

Azure 用にクラスターで証明書セキュリティを設定する方法については、「Azure Resource Manager を使用して Service Fabric クラスターを作成する」を参照してください。To learn how to set up certificate security in a cluster for Azure, see Set up a cluster by using an Azure Resource Manager template.

スタンドアロン Windows Server クラスター用にクラスターで証明書セキュリティを設定する方法については、「X.509 証明書を使用した Windows でのスタンドアロン クラスターの保護」を参照してください。To learn how to set up certificate security in a cluster for a standalone Windows Server cluster, see Secure a standalone cluster on Windows by using X.509 certificates.

Azure でのクライアントとノードの間の Azure Active Directory セキュリティClient-to-node Azure Active Directory security on Azure

Azure AD は組織 (テナントと呼ばれます) を有効にしてアプリケーションに対するユーザー アクセスを管理します。Azure AD enables organizations (known as tenants) to manage user access to applications. アプリケーションは、Web ベースのサインイン UI を持つアプリケーションと、ネイティブ クライアントのエクスペリエンスを持つアプリケーションに分けられます。Applications are divided into those with a web-based sign-in UI and those with a native client experience. まだテナントを作成していない場合は、まず Azure Active Directory テナントを取得する方法に関するページをお読みください。If you have not already created a tenant, start by reading How to get an Azure Active Directory tenant.

Service Fabric クラスターでは、Web ベースの Service Fabric ExplorerVisual Studio など、いくつかのエントリ ポイントから管理機能にアクセスできます。A Service Fabric cluster offers several entry points to its management functionality, including the web-based Service Fabric Explorer and Visual Studio. このため、クラスターへのアクセスを制御するには、2 つの Azure AD アプリケーション (Web アプリケーションとネイティブ アプリケーション) を作成します。As a result, you create two Azure AD applications to control access to the cluster, one web application and one native application.

Azure で実行されているクラスターの場合、Azure Active Directory (Azure AD) を使用して管理エンドポイントへのアクセスをセキュリティで保護することもできます。For clusters running on Azure, you also can secure access to management endpoints by using Azure Active Directory (Azure AD). 必要な Azure AD アーティファクトを作成する方法と、クラスターを作成するときにそれらに値を設定する方法については、クライアントを認証するための Azure AD の設定に関するページを参照してください。To learn how to create the required Azure AD artifacts and how to populate them when you create the cluster, see Set up Azure AD to authenticate clients.

セキュリティに関する推奨事項Security recommendations

Azure でホストされているパブリック ネットワークにデプロイされた Service Fabric クラスターの場合、クライアントとノードの間の相互認証は次のようにすることを推奨します。For Service Fabric clusters deployed in a public network hosted on Azure, the recommendation for client-to-node mutual authentication is:

  • クライアント ID には Azure Active Directory を使用するUse Azure Active Directory for client identity
  • サーバー ID および http 通信の TLS 暗号化の証明書A certificate for server identity and TLS encryption of http communication

Azure でホストされているパブリック ネットワークにデプロイされた Service Fabric クラスターの場合、ノード間のセキュリティではクラスター証明書を使用してノードを認証することをお勧めします。For Service Fabric clusters deployed in a public network hosted on Azure, the recommendation for node-to-node security is to use a Cluster certificate to authenticate nodes.

スタンドアロン Windows Server クラスターについては、Windows Server 2012 R2 と Windows Active Directory を使用している場合、グループ管理サービス アカウントで Windows セキュリティを使用することをお勧めします。For standalone Windows Server clusters, if you have Windows Server 2012 R2 and Windows Active Directory, we recommend that you use Windows security with group Managed Service Accounts. それ以外の場合は、Windows アカウントで Windows セキュリティを使用してください。Otherwise, use Windows security with Windows accounts.

ロール ベースのアクセス制御 (RBAC)Role-Based Access Control (RBAC)

アクセス制御を使用して、ユーザーの各グループについて特定のクラスター操作へのアクセスを制限することができます。You can use access control to limit access to certain cluster operations for different groups of users. その結果、クラスターのセキュリティが強化されます。This helps make the cluster more secure. クラスターに接続するクライアント用に、2 種類のアクセス制御 (管理者ロールとユーザー ロール) がサポートされています。Two access control types are supported for clients that connect to a cluster: Administrator role and User role.

管理者ロールが割り当てられたユーザーには、管理機能へのフル アクセス権 (読み取り機能、書き込み機能など) があります。Users who are assigned the Administrator role have full access to management capabilities, including read and write capabilities. ユーザー ロールが割り当てられたユーザーには、既定で管理機能 (クエリ機能など) への読み取りアクセス権のみがあります。Users who are assigned the User role, by default, have only read access to management capabilities (for example, query capabilities). また、アプリケーションとサービスを解決することもできます。They also can resolve applications and services.

クラスターを作成するときに、管理者およびユーザー クライアント ロールを設定します。Set the Administrator and User client roles when you create the cluster. ロールを割り当てるには、ロールの種類ごとに別の ID を指定します (たとえば、証明書または Azure AD を使用します)。Assign roles by providing separate identities (for example, by using certificates or Azure AD) for each role type. 既定のアクセス制御の設定と、既定の設定を変更する方法の詳細については、「ロール ベースのアクセス制御 (Service Fabric クライアント用)」を参照してください。For more information about default access control settings and how to change default settings, see Role-Based Access Control for Service Fabric clients.

X.509 証明書と Service FabricX.509 certificates and Service Fabric

一般的に、X.509 デジタル証明書は、クライアントとサーバーの認証に使用されています。X.509 digital certificates commonly are used to authenticate clients and servers. また、メッセージの暗号化やデジタル署名にも使用されます。They also are used to encrypt and digitally sign messages. Service Fabric では、X.509 証明書を使用してクラスターをセキュリティで保護し、アプリケーションのセキュリティ機能を提供します。Service Fabric uses X.509 certificates to secure a cluster and provide application security features. X.509 デジタル証明書の詳細については、「証明書の使用」を参照してください。For more information about X.509 digital certificates, see Working with certificates. Key Vault を使用して、Azure の Service Fabric クラスターの証明書を管理します。You use Key Vault to manage certificates for Service Fabric clusters in Azure.

次のような、考慮すべき重要な点がいくつかあります。Some important things to consider:

  • 運用環境のワークロードを実行しているクラスター用に証明書を作成するには、正しく構成された Windows Server 証明書サービスを使用するか、認定済みの証明機関 (CA) の証明書を使用する必要があります。To create certificates for clusters that are running production workloads, use a correctly configured Windows Server certificate service, or one from an approved certificate authority (CA).
  • MakeCert.exe などのツールを使用して作成した一時証明書やテスト証明書は実稼働環境では使用しないでください。Never use any temporary or test certificates that you create by using tools like MakeCert.exe in a production environment.
  • 自己署名証明書は、テスト クラスターでのみで使用できます。You can use a self-signed certificate, but only in a test cluster. 自己署名証明書は実稼働環境では使用しないでください。Do not use a self-signed certificate in production.
  • 証明書の拇印を生成するとき、必ず SHA1 拇印を生成してください。When generating the certificate thumbprint, be sure to generate a SHA1 thumbprint. SHA1 は、クライアントとクラスターの証明書拇印を構成するときに使用される拇印です。SHA1 is what's used when configuring the Client and Cluster certificate thumbprints.

クラスターとサーバーの証明書 (必須)Cluster and server certificate (required)

これらの証明書 (1 つのプライマリと省略可能なセカンダリ) は、クラスターをセキュリティで保護し、クラスターに対する不正なアクセスを防ぐために必要です。These certificates (one primary and optionally a secondary) are required to secure a cluster and prevent unauthorized access to it. これらの証明書は、クラスターとサーバーの認証を提供します。These certificates provide cluster and server authentication.

クラスター認証は、クラスター フェデレーション用のノード間通信を認証します。Cluster authentication authenticates node-to-node communication for cluster federation. この証明書で自分の ID を証明できたノードだけがクラスターに参加できます。Only nodes that can prove their identity with this certificate can join the cluster. サーバー認証は、管理クライアントに対するクラスター管理エンドポイントを認証します。これで、管理クライアントは、"中間者" ではなく実際のクラスターと通信していることを認識するようになります。Server authentication authenticates the cluster management endpoints to a management client, so that the management client knows it is talking to the real cluster and not a 'man in the middle'. また、この証明書は、HTTPS 管理 API および HTTPS 経由の Service Fabric Explorer に対する TLS も提供します。This certificate also provides a TLS for the HTTPS management API and for Service Fabric Explorer over HTTPS. クライアントまたはノードがノードを認証するときに行う初期チェックの 1 つは、サブジェクト フィールドの共通名の値を確認することです。When a client or node authenticates a node, one of the initial checks is the value of the common name in the Subject field. この共通名、または証明書のサブジェクト代替名 (SAN) の 1 つが、使用可能な共通名の一覧に存在する必要があります。Either this common name or one of the certificates' Subject Alternative Names (SANs) must be present in the list of allowed common names.

証明書は次の要件を満たす必要があります。The certificate must meet the following requirements:

  • 証明書は秘密キーを含む必要があります。The certificate must contain a private key. 通常、これらの証明書の拡張子は .pfx または .pem です。These certificates typically have extensions .pfx or .pem
  • 証明書はキー交換のために作成される必要があり、Personal Information Exchange (.pfx) ファイルにエクスポートできます。The certificate must be created for key exchange, which is exportable to a Personal Information Exchange (.pfx) file.
  • 証明書のサブジェクト名は Service Fabric クラスターへのアクセスに使用されるドメインと一致している必要がありますThe certificate's subject name must match the domain that you use to access the Service Fabric cluster. この整合性は、HTTPS 管理エンドポイントと Service Fabric Explorer 用の TLS を提供するために必要です。This matching is required to provide a TLS for the cluster's HTTPS management endpoint and Service Fabric Explorer. 証明機関 (CA) から *.cloudapp.azure.com ドメインの TLS/SSL 証明書を取得することはできません。You cannot obtain a TLS/SSL certificate from a certificate authority (CA) for the *.cloudapp.azure.com domain. クラスターのカスタム ドメイン名を取得する必要があります。You must obtain a custom domain name for your cluster. CA に証明書を要求するときは、証明書のサブジェクト名がクラスターに使用するカスタム ドメイン名と一致している必要があります。When you request a certificate from a CA, the certificate's subject name must match the custom domain name that you use for your cluster.

他に以下の点を考慮してください。Some other things to consider:

  • サブジェクト フィールドには、複数の値を指定することができます。The Subject field can have multiple values. 各値には、値の型を示す初期設定が先頭に付いています。Each value is prefixed with an initialization to indicate the value type. 通常、初期設定は、"共通名" を示す CN です。たとえば、CN = www.contoso.com です。Usually, the initialization is CN (for common name); for example, CN = www.contoso.com.
  • サブジェクト フィールドは空白にすることができます。The Subject field can be blank.
  • 省略可能なサブジェクト代替名フィールドに入力する場合は、証明書の共通名と、1 つの SAN につき 1 つのエントリを指定する必要があります。If the optional Subject Alternative Name field is populated, it must have both the common name of the certificate and one entry per SAN. これらの値は DNS 名値として入力します。These are entered as DNS Name values. SAN を含む証明書を生成する方法については、「セキュリティで保護された LDAP 証明書にサブジェクトの別名を追加する方法」を参照してください。To learn how to generate certificates that have SANs, see How to add a Subject Alternative Name to a secure LDAP certificate.
  • 証明書の目的フィールド値には、サーバー認証クライアント認証 などの適切な値を含めるようにしてください。The value of the Intended Purposes field of the certificate should include an appropriate value, such as Server Authentication or Client Authentication.

アプリケーション証明書 (省略可能)Application certificates (optional)

アプリケーション セキュリティの目的で、任意の数の追加の証明書をクラスターにインストールできます。Any number of additional certificates can be installed on a cluster for application security purposes. クラスターを作成する前に、ノードにインストールする証明書を必要とするアプリケーション セキュリティ シナリオについて考慮します。これには次のようなものがあります。Before creating your cluster, consider the application security scenarios that require a certificate to be installed on the nodes, such as:

  • アプリケーション構成値の暗号化と復号化。Encryption and decryption of application configuration values.
  • レプリケーション中のノード間のデータの暗号化。Encryption of data across nodes during replication.

セキュリティで保護されたクラスターを作成する概念は、Linux のクラスターでも Windows のクラスターでも同じです。The concept of creating secure clusters is the same, whether they are Linux or Windows clusters.

クライアント認証証明書 (省略可能)Client authentication certificates (optional)

管理者またはユーザーのクライアント操作用に、任意の数の証明書を追加で指定できます。Any number of additional certificates can be specified for admin or user client operations. 相互認証が必要な場合、クライアントはこの証明書を使用できます。The client can use this certificate when mutual authentication is required. 通常、クライアント証明書はサードパーティの CA から発行されません。Client certificates typically are not issued by a third-party CA. 代わりに、通常は、現在のユーザーの所在地の個人用ストアには、ルート機関が配置したクライアント証明書が含まれています。Instead, the Personal store of the current user location typically contains client certificates placed there by a root authority. 証明書には、クライアント認証目的の値が必要です。The certificate should have an Intended Purposes value of Client Authentication.

既定では、クラスター証明書には管理者クライアント特権があります。By default the cluster certificate has admin client privileges. これらの追加のクライアント証明書は、クラスターにインストールしてはいけませんが、クラスター構成で許可されるものとして指定されます。These additional client certificates should not be installed into the cluster, but are specified as being allowed in the cluster configuration. ただし、クラスターに接続して操作を行うには、クライアント マシンにクライアント証明書をインストールする必要があります。However, the client certificates need to be installed on the client machines to connect to the cluster and perform any operations.

注意

Service Fabric クラスター上のすべての管理操作には、サーバー証明書が必要です。All management operations on a Service Fabric cluster require server certificates. クライアント証明書は管理に利用できません。Client certificates cannot be used for management.

次のステップNext steps