如何在 docker 中初始化密钥表?
How to initialize a keytab in docker?
我有一个 krb5.conf 文件。我创建了一个密钥表并将其检查为已解释 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 virtual box 和 docker quickstrat 终端在本地测试所有内容。密钥表在服务器上生成并复制到本地机器上的项目中。
编辑
我使用
检查了图像中的文件
docker run -it --entrypoint sh <image-name>
他们在场。
不需要初始化。我设法 运行 它。你可以看看我是怎么做到的 .
编辑
另外,我找到了这个片段
CMD kinit -kt $HOME/$USER.keytab $USER && ${PROJECT_DIR}/oozie/${PROJECT_NAME}/start.sh
应该从 dockerfile 初始化密钥表。没有测试它,所以不知道它如何与 spring 一起工作。这将启动一个带有 kerberos 凭据的 oozie 协调器。
我有一个 krb5.conf 文件。我创建了一个密钥表并将其检查为已解释 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 virtual box 和 docker quickstrat 终端在本地测试所有内容。密钥表在服务器上生成并复制到本地机器上的项目中。
编辑
我使用
检查了图像中的文件docker run -it --entrypoint sh <image-name>
他们在场。
不需要初始化。我设法 运行 它。你可以看看我是怎么做到的
编辑
另外,我找到了这个片段
CMD kinit -kt $HOME/$USER.keytab $USER && ${PROJECT_DIR}/oozie/${PROJECT_NAME}/start.sh
应该从 dockerfile 初始化密钥表。没有测试它,所以不知道它如何与 spring 一起工作。这将启动一个带有 kerberos 凭据的 oozie 协调器。