From b37a9ca3618a9ce8089fbd0fd744cee9cf00e035 Mon Sep 17 00:00:00 2001 From: Riita <42636694+riita10069@users.noreply.github.com> Date: Wed, 17 Nov 2021 00:45:02 +0900 Subject: [PATCH 1/8] Update secret.md --- .../ja/docs/concepts/configuration/secret.md | 56 ++++++++++++++----- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md index f2a71e1860..0821b42a80 100644 --- a/content/ja/docs/concepts/configuration/secret.md +++ b/content/ja/docs/concepts/configuration/secret.md @@ -10,14 +10,31 @@ weight: 30 -KubernetesのSecretはパスワード、OAuthトークン、SSHキーのような機密情報を保存し、管理できるようにします。 -Secretに機密情報を保存することは、それらを{{< glossary_tooltip text="Pod" term_id="pod" >}}の定義や{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載するより、安全で柔軟です。 -詳しくは[Secretの設計文書](https://git.k8s.io/community/contributors/design-proposals/auth/secrets.md)を参照してください。 -Secretはパスワード、トークン、キーのような小容量の機密データを含むオブジェクトです。 -他の方法としては、そのような情報はPodの定義やイメージに含めることができます。 -ユーザーはSecretを作ることができ、またシステムが作るSecretもあります。 +Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクトのことです。 +このような情報は、Secretを用いないと {{< glossary_tooltip term_id="pod" >}} の定義や +{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。 +シークレットを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。 +なぜなら、シークレットは、それを使用するポッドとは独立して作成することができ、 +ポッドの作成、閲覧、編集といったワークフローの中でシークレット(およびそのデータ)が漏洩する危険性が低くなるためです。 +また、Kubernetesやクラスタ内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretsで追加の予防措置を取ることができます。 + +Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}} +に似ていますが、機密データを保持するために用います。 + + +{{< caution >}} +KubernetesのSecretは、デフォルトでは、APIサーバーの基礎となるデータストア(etcd)に暗号化されずに保存されます。APIにアクセスできる人は誰でもSecretを取得または変更でき、etcdにアクセスできる人も同様です。 +さらに、名前空間でPodを作成する権限を持つ人は、そのアクセスを使用して、その名前空間のあらゆるSecretを読むことができます。これには、Deploymentを作成する能力などの間接的なアクセスも含まれます。 + +Secretsを安全に使用するには、以下の手順を推奨します。 + +1. Secretsを[安全に暗号化する](/docs/tasks/administer-cluster/encrypt-data/) +2. Secretsのデータの読み取りを制限する[RBACルール](/docs/reference/access-authn-authz/authorization/)の有効化または設定 +3. 適切な場合には、RBACなどのメカニズムを使用して、どの原則が新しいSecretの作成や既存のSecretの置き換えを許可されるかを制限します。 + +{{< /caution >}} @@ -30,6 +47,7 @@ PodがSecretを使う方法は3種類あります。 - [コンテナの環境変数](#using-secrets-as-environment-variables)として利用する - Podを生成するために[kubeletがイメージをpullする](#using-imagepullsecrets)ときに使用する +KubernetesのコントロールプレーンでもSecretsは使われています。例えば、[bootstrap token Secrets](#bootstrap-token-secrets)は、ノード登録を自動化するための仕組みです。 Secretオブジェクトの名称は正当な[DNSサブドメイン名](/ja/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names)である必要があります。 シークレットの構成ファイルを作成するときに、`data`および/または`stringData`フィールドを指定できます。`data`フィールドと`stringData`フィールドはオプションです。 @@ -145,7 +163,8 @@ Docker configファイルがない場合、または`kubectl`を使用してDock kubectl create secret docker-registry secret-tiger-docker \ --docker-username=tiger \ --docker-password=pass113 \ - --docker-email=tiger@acme.com + --docker-email=tiger@acme.com \ + --docker-server=my-registry.example:5000 ``` このコマンドは、`kubernetes.io/dockerconfigjson`型のSecretを作成します。 @@ -153,15 +172,21 @@ kubectl create secret docker-registry secret-tiger-docker \ ```json { - "auths": { - "https://index.docker.io/v1/": { - "username": "tiger", - "password": "pass113", - "email": "tiger@acme.com", - "auth": "dGlnZXI6cGFzczExMw==" - } - } + "apiVersion": "v1", + "data": { + ".dockerconfigjson": "eyJhdXRocyI6eyJteS1yZWdpc3RyeTo1MDAwIjp7InVzZXJuYW1lIjoidGlnZXIiLCJwYXNzd29yZCI6InBhc3MxMTMiLCJlbWFpbCI6InRpZ2VyQGFjbWUuY29tIiwiYXV0aCI6ImRHbG5aWEk2Y0dGemN6RXhNdz09In19fQ==" + }, + "kind": "Secret", + "metadata": { + "creationTimestamp": "2021-07-01T07:30:59Z", + "name": "secret-tiger-docker", + "namespace": "default", + "resourceVersion": "566718", + "uid": "e15c1d7b-9071-4100-8681-f3a7a2ce89ca" + }, + "type": "kubernetes.io/dockerconfigjson" } + ``` ### Basic authentication Secret @@ -1062,3 +1087,4 @@ Podに複数のコンテナが含まれることもあります。しかし、Po - [`kubectl`を使用してSecretを管理する](/docs/tasks/configmap-secret/managing-secret-using-kubectl/)方法を学ぶ - [config fileを使用してSecretを管理する](/docs/tasks/configmap-secret/managing-secret-using-config-file/)方法を学ぶ - [kustomizeを使用してSecretを管理する](/docs/tasks/configmap-secret/managing-secret-using-kustomize/)方法を学ぶ +- [SecretのAPIリファレンス](/docs/reference/kubernetes-api/config-and-storage-resources/secret-v1/)を読む From e0d3ec65b63132e402c2fd785640f4a800e1723c Mon Sep 17 00:00:00 2001 From: Ryota Yamada <42636694+riita10069@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:24:53 +0900 Subject: [PATCH 2/8] Update content/ja/docs/concepts/configuration/secret.md Co-authored-by: nasa9084 --- content/ja/docs/concepts/configuration/secret.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md index 0821b42a80..2aa3a99b3b 100644 --- a/content/ja/docs/concepts/configuration/secret.md +++ b/content/ja/docs/concepts/configuration/secret.md @@ -12,7 +12,7 @@ weight: 30 Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクトのことです。 -このような情報は、Secretを用いないと {{< glossary_tooltip term_id="pod" >}} の定義や +このような情報は、Secretを用いないと{{< glossary_tooltip term_id="pod" >}}の定義や {{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。 シークレットを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。 From 93c0c2a51499627c3112139deafe69c0f7c0c386 Mon Sep 17 00:00:00 2001 From: Ryota Yamada <42636694+riita10069@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:25:03 +0900 Subject: [PATCH 3/8] Update content/ja/docs/concepts/configuration/secret.md Co-authored-by: nasa9084 --- content/ja/docs/concepts/configuration/secret.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md index 2aa3a99b3b..c9f95e4241 100644 --- a/content/ja/docs/concepts/configuration/secret.md +++ b/content/ja/docs/concepts/configuration/secret.md @@ -14,7 +14,7 @@ weight: 30 Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクトのことです。 このような情報は、Secretを用いないと{{< glossary_tooltip term_id="pod" >}}の定義や {{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。 -シークレットを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。 +Secretを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。 なぜなら、シークレットは、それを使用するポッドとは独立して作成することができ、 ポッドの作成、閲覧、編集といったワークフローの中でシークレット(およびそのデータ)が漏洩する危険性が低くなるためです。 From f829e1698d3e65e34a0d7675b87843365897f286 Mon Sep 17 00:00:00 2001 From: Ryota Yamada <42636694+riita10069@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:25:12 +0900 Subject: [PATCH 4/8] Update content/ja/docs/concepts/configuration/secret.md Co-authored-by: nasa9084 --- content/ja/docs/concepts/configuration/secret.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md index c9f95e4241..7105a6df7e 100644 --- a/content/ja/docs/concepts/configuration/secret.md +++ b/content/ja/docs/concepts/configuration/secret.md @@ -17,7 +17,7 @@ Secretとは、パスワードやトークン、キーなどの少量の機密 Secretを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。 なぜなら、シークレットは、それを使用するポッドとは独立して作成することができ、 -ポッドの作成、閲覧、編集といったワークフローの中でシークレット(およびそのデータ)が漏洩する危険性が低くなるためです。 +Podの作成、閲覧、編集といったワークフローの中でSecret(およびそのデータ)が漏洩する危険性が低くなるためです。 また、Kubernetesやクラスタ内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretsで追加の予防措置を取ることができます。 Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}} From 6c6d267a48a44af0f5d337a55bda643a77dcdf2a Mon Sep 17 00:00:00 2001 From: Ryota Yamada <42636694+riita10069@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:25:23 +0900 Subject: [PATCH 5/8] Update content/ja/docs/concepts/configuration/secret.md Co-authored-by: nasa9084 --- content/ja/docs/concepts/configuration/secret.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md index 7105a6df7e..d7435d9752 100644 --- a/content/ja/docs/concepts/configuration/secret.md +++ b/content/ja/docs/concepts/configuration/secret.md @@ -25,7 +25,7 @@ Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}} {{< caution >}} -KubernetesのSecretは、デフォルトでは、APIサーバーの基礎となるデータストア(etcd)に暗号化されずに保存されます。APIにアクセスできる人は誰でもSecretを取得または変更でき、etcdにアクセスできる人も同様です。 +KubernetesのSecretは、デフォルトでは、APIサーバーの基礎となるデータストア(etcd)に暗号化されずに保存されます。APIにアクセスできる人は誰でもSecretを取得または変更でき、etcdにアクセスできる人も同様です。 さらに、名前空間でPodを作成する権限を持つ人は、そのアクセスを使用して、その名前空間のあらゆるSecretを読むことができます。これには、Deploymentを作成する能力などの間接的なアクセスも含まれます。 Secretsを安全に使用するには、以下の手順を推奨します。 From 76fdf0e3e66393f218e3397fb31f1b33913cbf7f Mon Sep 17 00:00:00 2001 From: Ryota Yamada <42636694+riita10069@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:25:32 +0900 Subject: [PATCH 6/8] Update content/ja/docs/concepts/configuration/secret.md Co-authored-by: nasa9084 --- content/ja/docs/concepts/configuration/secret.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md index d7435d9752..58728bc1b5 100644 --- a/content/ja/docs/concepts/configuration/secret.md +++ b/content/ja/docs/concepts/configuration/secret.md @@ -16,7 +16,7 @@ Secretとは、パスワードやトークン、キーなどの少量の機密 {{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。 Secretを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。 -なぜなら、シークレットは、それを使用するポッドとは独立して作成することができ、 +なぜなら、Secretは、それを使用するPodとは独立して作成することができ、 Podの作成、閲覧、編集といったワークフローの中でSecret(およびそのデータ)が漏洩する危険性が低くなるためです。 また、Kubernetesやクラスタ内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretsで追加の予防措置を取ることができます。 From 61cbfe80b2b94ee223a34b94933fa19b1dd06d65 Mon Sep 17 00:00:00 2001 From: Ryota Yamada <42636694+riita10069@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:25:37 +0900 Subject: [PATCH 7/8] Update content/ja/docs/concepts/configuration/secret.md Co-authored-by: nasa9084 --- content/ja/docs/concepts/configuration/secret.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md index 58728bc1b5..689fcdb4ac 100644 --- a/content/ja/docs/concepts/configuration/secret.md +++ b/content/ja/docs/concepts/configuration/secret.md @@ -18,7 +18,7 @@ Secretを使用すれば、アプリケーションコードに機密データ なぜなら、Secretは、それを使用するPodとは独立して作成することができ、 Podの作成、閲覧、編集といったワークフローの中でSecret(およびそのデータ)が漏洩する危険性が低くなるためです。 -また、Kubernetesやクラスタ内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretsで追加の予防措置を取ることができます。 +また、Kubernetesやクラスター内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretで追加の予防措置を取ることができます。 Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}} に似ていますが、機密データを保持するために用います。 From 7a4cc6ca6611a2acc86baa0c2be6e6d44d9b2e8c Mon Sep 17 00:00:00 2001 From: Ryota Yamada <42636694+riita10069@users.noreply.github.com> Date: Sun, 2 Jan 2022 18:28:03 +0900 Subject: [PATCH 8/8] Update secret.md --- content/ja/docs/concepts/configuration/secret.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md index 689fcdb4ac..795196c3b2 100644 --- a/content/ja/docs/concepts/configuration/secret.md +++ b/content/ja/docs/concepts/configuration/secret.md @@ -12,16 +12,14 @@ weight: 30 Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクトのことです。 -このような情報は、Secretを用いないと{{< glossary_tooltip term_id="pod" >}}の定義や -{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。 +このような情報は、Secretを用いないと{{< glossary_tooltip term_id="pod" >}}の定義や{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。 Secretを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。 なぜなら、Secretは、それを使用するPodとは独立して作成することができ、 Podの作成、閲覧、編集といったワークフローの中でSecret(およびそのデータ)が漏洩する危険性が低くなるためです。 また、Kubernetesやクラスター内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretで追加の予防措置を取ることができます。 -Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}} -に似ていますが、機密データを保持するために用います。 +Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}}に似ていますが、機密データを保持するために用います。 {{< caution >}}