11.4. サービスアカウントの認証情報の外部での使用
サービスアカウントのトークンは、API に対して認証する必要のある外部アプリケーションに配布することができます。
イメージをプルするには、要求される imagestreams/layers
に対する get
権限が、この認証済みのユーザーに割り当てられている必要があります。イメージをプッシュするには、認証済みのユーザーに、要求される imagestreams/layers
に対する update
権限がある必要があります。
デフォルトで、プロジェクトのすべてのサービスアカウントは同じプロジェクトの任意のイメージをプルする権限を持ち、builder サービスアカウントには同じプロジェクトの任意のイメージをプッシュする権限を持ちます。
手順
サービスアカウントのトークンを表示します。
$ oc describe secret <secret_name>
以下に例を示します。
$ oc describe secret robot-token-uzkbh -n top-secret
出力例
Name: robot-token-uzkbh Labels: <none> Annotations: kubernetes.io/service-account.name=robot,kubernetes.io/service-account.uid=49f19e2e-16c6-11e5-afdc-3c970e4b7ffe Type: kubernetes.io/service-account-token Data token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
取得したトークンを使用してログインします。
$ oc login --token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
出力例
Logged into "https://server:8443" as "system:serviceaccount:top-secret:robot" using the token provided. You don't have any projects. You can try to create a new project, by running $ oc new-project <projectname>
サービスアカウントとしてログインしたことを確認します。
$ oc whoami
出力例
system:serviceaccount:top-secret:robot