在云上, 如何, 何安, 何安全, 安全
在云上如何安全合规地配置网站数据库连接信息 概述 在之前文章 如何在阿里云上安全的存放您的配置 - 续 中,咱们讲述了云上安全存放配置的具体的方法。基于前文原理,本文将以具体代码如下示例方式讲解如何基于配置中心产品 ACM 将应用配置( 以 数据库连接配置 为例)从应用网站程序具体代码如下中解耦,从而达到以下目的:
示例网站程序架构和准备工作 文章中的示例将分为以下几个步骤:
网站程序具体代码如下架构如下图所示: 配置 ECS RAM Role 在ACM网站程序访问中,用户可设置 AccessKey、SecretKey 属性的方式来访问 ACM 产品,但是在本文中推荐通过“ECS 实例角色”的方式来访问ACM。该方式自动获取临时凭证,提高安全性和降低运维成本,凭证周期由 ACM SDK 自动维护,应用运行时只需设置 JVM 参数“-Dram.role.name=ramRoleName”,ramRoleName”, ramRoleName 为授予该 ECS 的 RAM 角色名称,如 ECS-RAM。运行命令如下:
引用
java -jar -Dram.role.name=ECS-RAM sample-1.0-SNAPSHOT-jar-with-dependencies.jar
关于如何设置 ECS 实例角色,请参考“ECS 实例角色”文章。为减少文章篇幅,本文不赘述了。 读取配置网站程序编写 该章节分为三个部分:
在网站程序中初始化 ACM,并读取相关配置
引用
private void initACM() { Properties properties = new Properties(); String namespace = "1ca01ca0-11b0-1e01-0df1-d1010101bc10"; String endpoint = "acm.aliyun.com"; properties.put("endpoint", endpoint); properties.put("namespace", namespace); ConfigService.init(properties); }
通过 ACM 获取配置并监听配置变化 获取网站数据库连接配置的内容,并且添加配置监听 器。当网站数据库连接配置的内容需要变更,在 ACM 控制台修改后,网站程序实时接收到新的内容,新的网站数据库连接也实时生效,不中断网站程序的运行。
引用
private void initJDBCProperties() throws ConfigException { String dataId = "com.alibaba.cloud.acm:jdbc-sample.properties"; String group = "DEFAULT_GROUP"; properties = ConfigService.getConfig2Properties(dataId, group, 3000); // 添加配置监听 ConfigService.addListener(dataId, group, new ConfigChangeListener() { @Override public void receiveConfigInfo(String content) { Properties properties = new Properties(); try { properties.load(new StringReader(content)); } catch (IOException e) { LOGGER.error("addListener", e); } SampleApp.this.properties = properties; } }); }
建立网站数据库连接并查询数据 从 ACM 获取到的连接网站数据库所需的地址、用户名、密码,通过 MySQL JDBC 驱动包“mysql-connector-java”与 MySQL 服务建立连接。接着,再查询“user”表的总记录数,返回给函数调用者。 注: 网站程序中使用的连接信息为ACM中保存的最新的网站数据库连接信息,连接信息通过上面的ACM的监听配置网站程序进行动态刷新,从而保证为最新。
引用
private int count() { String url = properties.getProperty("jdbc.url"); String username = properties.getProperty("jdbc.username"); String password = properties.getProperty("jdbc.password"); Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { connection = DriverManager.getConnection(url, username, password); statement = connection.createStatement(); resultSet = statement.executeQuery("select count(*) from `user`"); if (resultSet.next()) { return resultSet.getInt(1); } } catch (SQLException e) { LOGGER.error("count", e); } finally { close(connection, statement, resultSet); } return 0; }
测试运行 如果您按照本片文章前面工作,完成了 ECS RAM Role 设置和授权以后,可在不设置任何 AK/SK 情况下,将网站程序实例打包成可执行 jar 后,名站分类目录到对应的 ECS 环境上运行即可。当网站程序运行时,如 如何在阿里云上安全的存放您的配置 - 续 文章所描述的,网站程序将自动获取临时凭证访问 ACM,凭证周期由 ACM SDK 自动维护。应用运行时只需设置 JVM 参数“-Dram.role.name=ramRoleName”,ramRoleName”,ramRoleName 为授予该 ECS 的 RAM 角色名称,如 ECS-RAM。运行命令如下:
引用
java -jar -Dram.role.name=ECS-RAM sample-1.0-SNAPSHOT-jar-with-dependencies.jar
本具体代码如下示例通过 ACM 控制台配置 JDBC 的连接属性,再使用 ACM Java SDK 读取配置内容,与 MySQL 建立连接,查询“用户”数据,最后将结果打印出来,控制台输出内容如下:
引用
总记录数: 9
注:如果是在您自己电脑上或本地测试,需要手动设置 AccessKey、SecretKey 属性,才可以访问 ACM 产品,目前支持三种设置方式,本示例可使用环境变量,如下:
引用
spas_accessKey=xxx spas_secretKey=xxx
|
名站网址导航 于 2020-7-22 20:55 移动 @版权声明 名站网址导航声明: 1.该文观点仅代表作者本人,名站网址导航系信息发布平台,名站网址导航仅提供信息存储空间服务。 2.名站网址导航所发布的一切资源、破解补丁、注册机和注册信息及软件的解密分析文章等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该网站程序,请支持正版软件,购买注册,得到更好的正版服务。 3.如有侵权请邮件与咱们联系删除或处理(邮箱:[email 988365@gmail.com] ),本站将立即改正,谢谢。
MT管理器之安卓破解教程全套0B9AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
课程目录:,1、割绳子魔法破解教程,2、格斗三国志、分析破解教程,3、如何直接点击购买直接成功不弹窗,4、盗版弹窗通用破处!内购破解识别代码,5、如何绕开假支付代码到成功代码中去,6、修改金币和等级经验及升级奖励币,7、详解支付宝支付流程和微信支付破解,8、破除游戏检测修改器验证及内购破解分析,9、破除支付弹窗和飞行模式及无sim卡支付以及软件名称修改、新内购模式破解,10、深入讲解弹窗以及内购代码分析,11、深入讲解闪退原理及游戏与软件分析,12、一首歌的时间的破解,13、软件积分破解及广告去除,14、深入讲解盗版验证去除诡异内购,15、软件加密与解密过程,16、积分游戏与初始金币修改,17、代码与软件破解,18、注入注册机及去除注册机,19、新方法存档注入及新方法内购,20、加载彩色弹窗及去除他人弹窗,21、咪咕游戏支付流程及无支付弹窗过程,22、破解注册机制及算法分析,23、mm游戏支付流程及破解方法,24、爱游戏支付流程及破解方法25、破解软件的从普通版转专业版,26、沃游戏支付流程及破解方法,27、4399游戏支付流程及破解方法,28、360与百度,29、悬浮窗,30、位图讲解,31、抓包数据,0B9AIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!