如何在docker中初始化keytab?

Posted

技术标签:

【中文标题】如何在docker中初始化keytab?【英文标题】:How to initialize a keytab in docker? 【发布时间】:2017-09-01 09:35:55 【问题描述】:

我有一个 krb5.conf 文件。我创建了一个 keytab 并将其检查为 expalined here。

在 docker 文件中,我将其全部添加到容器中

FROM java:8

ADD krb5.conf /etc/krb5.conf
ADD evkuzmin.keytab /etc/evkuzmin.keytab
ADD scripts/ /opt/scripts/

ADD report.jar report.jar
RUN sh -c 'touch report.jar'
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://audpro_mongo/report","-Djava.security.egd=file:/dev/./urandom","-jar","/report.jar","/opt/scripts/init-keytab.sh"]

并尝试在 init-keytab.sh 中对其进行初始化

#!/bin/bash
kinit EvKuzmin@REALM -k -t /etc/evkuzmin.keytab

但每次我尝试访问受保护的集群时,都会收到未经授权的错误。当我用

检查我的密钥表时
klist -k evkuzmin.keytab

找不到 evkuzmin.keytab。

为什么?

我使用 Oracle 虚拟机和 docker quickstrat 终端在本地测试所有内容。 Keytab 在服务器上生成,并复制到本地机器上的项目中。

编辑

我使用检查了图像中的文件

docker run -it --entrypoint sh <image-name>

他们在场。

【问题讨论】:

【参考方案1】:

不需要初始化它。我设法运行它。你可以找到我是怎么做到的here。

编辑

另外,我找到了这个sn-p

CMD kinit -kt $HOME/$USER.keytab $USER && $PROJECT_DIR/oozie/$PROJECT_NAME/start.sh

应该从 dockerfile 初始化 keytab。没有测试它,所以不知道它如何与spring一起使用。这将使用 kerberos 凭据启动一个 oozie 协调器。

【讨论】:

干得好。请自行接受您自己的答案。这将有助于更好地向在 Google 上搜索此问题的人指出问题。

以上是关于如何在docker中初始化keytab?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Docker中初始化数据库后启动flyway

如何在 Docker 容器中使用模式初始化 MySQL 数据库?

如何在 Dockerfile for Docker Cloud 中正确初始化 git 子模块

kerberos 身份验证-功能组

使用 keytab 而不将其写入磁盘的 Bash 脚本

如何在 Docker Compose 中初始化 MySql 数据库