Code Engine とセキュリティー
IBM Cloud® Code Engineアーキテクチャーは、セキュリティー優先のマインドセットを使用して構築されています。Code Engineコンポーネントは IBM によって管理および所有されるものです。 お客様およびそのワークロードは、プロジェクトを使用することでそれぞれ分離され、それらは
Kubernetes 名前空間に基づいています。 リソース・レベルで役割ベース・アクセス制御が実行され、許可されたユーザーにのみ、プロジェクト・リソースに対する特定の操作の実行が許可されます。 ユーザー・アクセスは Cloud Identity and Access Management (IAM) によって管理されます。 Deployed apps are exposed through HTTPS
and Code Engine creates and
manages the underlying TLS certifications automatically for you. Code Engine provides immediate DDoS protection for your application. Code Engine's DDoS protection is provided by Cloud Internet Services (CIS) at no
additional cost to you.
定義上、Code Engine ジョブには外部からアクセスできません。 それでも、ジョブからは外部への要求を作成でき、内部的に Code Engine アプリケーションの呼び出しもできます。 アプリケーションを内部的に呼び出すジョブの例については、Samples for Code Engine GitHub repository.
以下のセキュリティー機能を使用してセキュリティーを強化できます。
セキュリティー機能 | 説明 |
---|---|
IAM によるアクセスの許可 | Cloud Identity and Access Management (IAM) を使用して、Code Engineの他のユーザーにアクセス権限を付与します。IBM Cloud IAM は、IBM Cloudプラットフォーム、Code Engine、およびアカウント内のすべてのリソースを使用したセキュア認証を提供します。 適切なユーザー役割および許可をセットアップすることは、リソースにアクセスできるユーザーを制限するために重要です。 ユーザー・アクセスの管理を参照してください。 |
外部エンドポイントの無効化 | --visibility=private またはvisibility=project オプションを使用して、外部トラフィックに公開されていない無効な外部エンドポイントを使用してアプリケーションをデプロイします。 Code Engineアプリケーションの可視性のオプションを参照してください。 |
プライベート・イメージ・レジストリーへのイメージの保管 | IBM Cloud Container Registry で提供されているようなプライベート・イメージ・レジストリーをセットアップして、レジストリーや、Code Engine にデプロイ可能なイメージへのアクセスを制御します。 IBM Cloud Container Registry脆弱性アドバイザーを使用してイメージを自動的にスキャンします。 独自のカスタム・プライベート・レジストリーへのアクセスを追加することもできます。 コンテナー・レジストリーへのアクセスを参照してください。 |
プライベート・リポジトリーからのコードのビルド | ソース・コードをプライベート・リポジトリーに保管して、IBM Cloud Container Registry にビルドします。 プライベート・コード・リポジトリーへのアクセスを参照してください。 |
シークレットを使用した機密情報の保管 | パスワードや SSH 鍵のような情報をシークレットに保管することができます。 詳しくは、 シークレットの処理 を参照してください。 |
認証機能と許可機能の追加 | パブリック API または Web サイト上の Code Engine でアプリケーションまたは関数を公開する場合、特定のユーザーまたはロケーション (IP アドレス範囲) にアクセスを制限することができます。 Code Engine では、 Code Engine プロジェクトとそのエンティティーを管理するために使用できる API のアクセスを制限する機能が提供されますが、コード・ソースの所有者は、エンドポイントを保護するために適切な認証機能を追加する必要があります。 例えば、 IBM Cloud App ID を使用して、コードの認証機能と許可機能を追加できます。 |
TLS 証明書を定期的にローテートする | カスタム・ドメイン・マッピングを使用してアプリケーションまたは機能を公開する場合は、TLS 証明書に有効期限日付 (90 日など) があることを確認する必要があります。 更新された証明書 (独自の有効期限日付を持つ証明書) を使用して、証明書を定期的にローテーションする必要があります。 証明書をローテーションするには、自動化を使用することをお勧めします。 例えば、クーロン・サブスクリプションによってトリガーされる Code Engine ジョブを使用して、証明書をローテートできます。 IBM Cloud Secrets Managerにシークレットを保管する場合は、 IBM Cloud Event Notifications を使用して、 Code Engine プロジェクトを使用することを検討してください。 GitHubの Code Engineサンプルリポジトリにアクセスすると、イベント通知を使用するサンプルアプリを見つけることができます。 |
サポートされる TLS バージョンおよび暗号スイート
Code Engine API およびアプリケーション・エンドポイントは、トランスポート層セキュリティー (TLS) 1.2 (以上) および以下の暗号スイートをサポートします。
TLS 暗号スイート
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
DDoS防御
Code Engine provides immediate DDoS protection for your application. Code Engine's DDoS protection is provided by Cloud Internet Services (CIS) at no additional cost to you.
DDoS 保護は、システム相互接続 (OSI) レイヤー 3 およびレイヤー 4 (TCP/IP) プロトコル攻撃をカバーしますが、レイヤー 7 (HTTP) 攻撃はカバーしません。
レイヤー 7 攻撃に対処するために、以下のステップを実行して、トラフィックがカスタム・ドメインを使用してセキュアな経路を通過し、 Code Engine 提供ドメインを介してパブリック・インターネットで使用できなくなるようにすることができます。
- カスタム・ドメインを取得します。
- Code Engineで、アプリの カスタム・ドメイン・マッピングを作成 します。
- カスタム・ドメインを管理するために Cloud Internet Services (CIS) のインスタンスをセットアップします。
- カスタム・ドメインを CIS インスタンスに追加します。
- CISで グローバル・ロード・バランサーを構成します。
- CISで ロード・バランサーの HTTP プロキシー・モードを有効にします。 これにより、レイヤー 7 およびその他の CIS セキュリティー機能で DDoS 保護がアクティブ化されます。
- Code Engineで、アプリケーションのパブリック・システム提供ドメイン・マッピングをオフにします。 アプリケーションに移動し、アプリケーションの 「ドメイン・マッピング (Domain mappings)」 タブで、 「外部システム・ドメイン・マッピングなし (No external system domain mapping)」 を選択します。
- 「作成」 をクリックして、アプリケーション・リビジョンを保存します。
CISの DDoS について詳しくは、 CIS を参照してください。 レイヤー 7 攻撃に対処するその他の方法については、 CIS を参照してください。