Kubernetes 1.14: SIG Auth の変更内容


# 1.14 What's New

SIG Authが深く関連しているものはありませんでした。


# Known Issues

SIG Authが深く関連しているものはありませんでした。

# Urgent Upgrade Notes

-   **1.14からはデフォルトのRBACポリシーで非認証ユーザに対して `kubectl auth can-i` で使われているような `discovery` および `permission check`の権限を与えないようになりました。既存のクラスタからのバージョンアップでは影響ありませんが、新規クラスタにおいて以前と同様の権限が必要な場合には明示的に権限を与える必要があります。**

```
$ kubectl create clusterrolebinding anonymous-discovery --clusterrole=system:discovery --group=system:unauthenticated
$ kubectl create clusterrolebinding anonymous-access-review --clusterrole=system:basic-user --group=system:unauthenticated
```

# Urgent Upgrade Notes

SIG Authが深く関連しているものはありませんでした。


# Notable Features

SIG Authが深く関連しているものはありませんでした。

# Detailed Bug Fixes And Changes

-  **`kubectl can-i -list` コマンドが追加され、ユーザは特定のNamespaceにおいてどのような権限があるのか一覧できるようになりました。**  ([#64820](https://github.com/kubernetes/kubernetes/pull/64820))

```
$  kubectl auth can-i --list --namespace=test-namespace

Resources                                       Non-Resource URLs        Resource Names   Verbs
---------                                       -----------------        --------------   -----
*.*                                             []                       []               [*]
                                                [*]                      []               [*]
selfsubjectaccessreviews.authorization.k8s.io   []                       []               [create]
selfsubjectrulesreviews.authorization.k8s.io    []                       []               [create]
                                                [/api/*]                 []               [get]
                                                [/api]                   []               [get]
                                                [/apis/*]                []               [get]
                                                [/apis]                  []               [get]
                                                [/healthz]               []               [get]
                                                [/openapi/*]             []               [get]
                                                [/openapi]               []               [get]
                                                [/swagger-2.0.0.pb-v1]   []               [get]
                                                [/swagger.json]          []               [get]
                                                [/swaggerapi/*]          []               [get]
                                                [/swaggerapi]            []               [get]
                                                [/version/]              []               [get]
                                                [/version]               []               [get]
```

-   **RBACのRoleおよびClusterRoleの`rules`フィールドがオプショナルであることが正しく設定されました。** ([#73250](https://github.com/kubernetes/kubernetes/pull/73250))

RoleやClusterRoleでのAggregationを利用している場合にはrulesフィールドが空になることがあります。これまでバリデーションの不具合により空の場合でも必ず長さ0のリストを指定する必要がありましたが、この修正により指定しなくてもよくなりました。

1.13以前でもapplyに成功。

```
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: monitoring
aggregationRule:
  clusterRoleSelectors:
  - matchLabels:
      test: "true"
rules: []
```

1.13以前ではapplyに失敗。1.14以降は成功。

```
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: monitoring
aggregationRule:
  clusterRoleSelectors:
  - matchLabels:
      kubernetes.io/cluster-service: "true"
```

-  **`system:kube-controller-manager` と `system:kube-scheduler` はデフォルトのRBACポリシーによって認証(TokenReview)と認可(SubjectAccessReview)のチェックが可能になりました。** ([#72491](https://github.com/kubernetes/kubernetes/pull/72491)) (以前は同じ用途のRoleBindingが別途作られていた)

`controller-manager:extension-apiserver-authentication-reader`や`controller-manager:system:auth-delegator`

-   **APIサーバがauthentication webhookからのエラーメッセージを正しく出力するように修正されました。** ([#73595](https://github.com/kubernetes/kubernetes/pull/73595))

logやAPIサーバーのレスポンスにwebhookのエラーメッセージを含めることにセキュリティ的な懸念はないのか気にしている人がいましたが自分もそこは気になりました。

-   **複数バージョンが定義されているCRDのリソースでのadmission webhook pluginの使用について正しく動作するように修正されました。** ([#74154](https://github.com/kubernetes/kubernetes/pull/74154))