代码空间


摘要(Abstract)

通过使用阿里云的RAM(Resource Access Management)服务,您可以将您云账号下RDS资源的访问及管理权限授予RAM中的子用户。 目前,可以在RAM中进行授权的资源类型只有dbinstance。在通过RAM进行授权时,资源的描述方式如下: 当子用户通过API访问RDS时,RDS后台会向RAM进行权限检查,以确保调用者拥有相应权限。每个API会根据涉及到的资源以及API的语义来确定需要检查哪些资源的权限。每个API的鉴权规则如下表所示: sts权限 加入收藏 上面章节只用到了 RAM 的子账号功能,这些子账号都是可以长期正常使用的,发生泄露后如果无法及时解除权限,会非常危险。 当开发者的 app 被用户使用之后,用户的数据要写入 ram-test-dev 这个实例。当 app 的用户数据很多时,要求能够安全地授权给众多的 app 用户上传数据,并且保证多个用户之间存储的隔离。 类似这种场景需要临时访问权限,应该使用 STS 来完成。STS 可以指定复杂的策略来对特定的用户进行限制,仅提供最小的权限。 创建角色 创建一个名为 ram_test_app 的子账号,不需要赋予任何权限,因为在扮演角色的时候会自动获得被扮演角色的所有权限。有关创建RAM用户更多详情,请参见使用示例中的步骤1至步骤7。 创建两个角色,RamTestAppReadOnly 和 RamTestAppWrite。一个用于读取等操作,一个用于上传文件的操作。 登录RAM 控制台。 选择角色管理 > 新建角色。 选择角色类型。这里选择用户角色。 填写类型信息。因为角色是被阿里云账号使用过的,因此选择默认的即可。然后单击下一步。 配置角色基本信息。本实例中角色名称填写 RamTestAppReadOnly,然后单击创建。 完成角色创建后,单击关闭。 创建完角色之后,角色是没有任何权限的,因此需要新建一个自定义的授权策略。 选择策略管理 > 新建授权策略。 选择空白模板。 填写授权策略名称。该示例中填写ram-test-app-readonly,策略内容填写如下:


主题(Topic)

项目(Project)
//光照 #define sensorPin_1 A0 #define SSID "jiaobaba" // cannot be longer than 32 characters! #define PASSWORD "babababa" #define IDLE_TIMEOUT_MS 3000 // Amount of time to wait (in milliseconds) with no data // received before closing the connection. If you know the server // you're accessing is quick to respond, you can reduce this value. //WEBSITE #define HOST_NAME "api.heclouds.com" #define DEVICEID "9939133" #define PROJECTID "91729" #define HOST_PORT (80) String apiKey="VeFI0HZ44Qn5dZO14AuLbWSlSlI="; char buf[10]; #define INTERVAL_sensor 2000 unsigned long sensorlastTime = millis(); float tempOLED, humiOLED, lightnessOLED; #define INTERVAL_OLED 1000 String mCottenData; String jsonToSend; //3,传感器值的设置 float sensor_tem, sensor_hum, sensor_lux; //传感器温度、湿度、光照 char sensor_tem_c[7], sensor_hum_c[7], sensor_lux_c[7] ; //换成char数组传输 #include SoftwareSerial mySerial(2, 3); /* RX:D3, TX:D2 */ ESP8266 wifi(mySerial); //ESP8266 wifi(Serial1); //定义一个ESP8266(wifi)的对象 unsigned long net_time1 = millis(); //数据上传服务器时间 unsigned long sensor_time = millis(); //传感器采样时间计时器 //int SensorData; //用于存储传感器数据 String postString; //用于存储发送数据的字符串 //String jsonToSend; //用于存储发送的json格式参数 void setup(void) //初始化函数 { //初始化串口波特率 Wire.begin(); Serial.begin(115200); while(!Serial); pinMode(sensorPin_1, INPUT); //ESP8266初始化 Serial.print("setup begin\r\n"); Serial.print("FW Version:"); Serial.println(wifi.getVersion().c_str()); if (wifi.setOprToStationSoftAP()) { Serial.print("to station + softap ok\r\n"); } else { Serial.print("to station + softap err\r\n"); } if (wifi.joinAP(SSID, PASSWORD)) { //加入无线网 Serial.print("Join AP success\r\n"); Serial.print("IP: "); Serial.println(wifi.getLocalIP().c_str()); } else { Serial.print("Join AP failure\r\n"); } if (wifi.disableMUX()) { Serial.print("single ok\r\n"); } else { Serial.print("single err\r\n"); } Serial.print("setup end\r\n"); } void loop(void) //循环函数 { if (sensor_time > millis()) sensor_time = millis(); if(millis() - sensor_time > INTERVAL_SENSOR) //传感器采样时间间隔 { getSensorData(); //读串口中的传感器数据 sensor_time = millis(); } if (net_time1 > millis()) net_time1 = millis(); if (millis() - net_time1 > INTERVAL_NET) //发送数据时间间隔 { updateSensorData(); //将数据上传到服务器的函数 net_time1 = millis(); } } void getSensorData(){ sensor_tem = SHT2x.GetTemperature() ; sensor_hum = SHT2x.GetHumidity(); //获取光照 sensor_lux = analogRead(A0); delay(1000); dtostrf(sensor_tem, 2, 1, sensor_tem_c); dtostrf(sensor_hum, 2, 1, sensor_hum_c); dtostrf(sensor_lux, 3, 1, sensor_lux_c); } void updateSensorData() { if (wifi.createTCP(HOST_NAME, HOST_PORT)) { //建立TCP连接,如果失败,不能发送该数据 Serial.print("create tcp ok\r\n"); jsonToSend="{\"Temperature\":"; dtostrf(sensor_tem,1,2,buf); jsonToSend+="\""+String(buf)+"\""; jsonToSend+=",\"Humidity\":"; dtostrf(sensor_hum,1,2,buf); jsonToSend+="\""+String(buf)+"\""; jsonToSend+=",\"Light\":"; dtostrf(sensor_lux,1,2,buf); jsonToSend+="\""+String(buf)+"\""; jsonToSend+="}"; postString="POST /devices/"; postString+=DEVICEID; postString+="/datapoints?type=3 HTTP/1.1"; postString+="\r\n"; postString+="api-key:"; postString+=apiKey; postString+="\r\n"; postString+="Host:api.heclouds.com\r\n"; postString+="Connection:close\r\n"; postString+="Content-Length:"; postString+=jsonToSend.length(); postString+="\r\n"; postString+="\r\n"; postString+=jsonToSend; postString+="\r\n"; postString+="\r\n"; postString+="\r\n"; const char *postArray = postString.c_str(); //将str转化为char数组 Serial.println(postArray); wifi.send((const uint8_t*)postArray, strlen(postArray)); //send发送命令,参数必须是这两种格式,尤其是(const uint8_t*) Serial.println("send success"); if (wifi.releaseTCP()) { //释放TCP连接 Serial.print("release tcp ok\r\n"); } else { Serial.print("release tcp err\r\n"); } postArray = NULL; //清空数组,等待下次传输数据 } else { Serial.print("create tcp err\r\n"); } }" class="topic-tag topic-tag-link"> wife- stschmaltz/text-my-wife Sushant2/Know-Your-Bed zitorelova/neural-doodle-generation rebeling/anchorman hannahvoelker/emojicrypt Techcraft7/Bed-Wars-Code amayakasa/vk-to-spotify RaneeDEV/Gift-store princekrvert/Ascii_c badal-cloud/Know-Your-Bed Fantom-Factory/afColdFeet Kyfafyd/Virtual-Running Nofre/RGBed swordfatih/tablite peppys/annoy-wifey ahl389/rainbowify soltex1/Social-Networks---Colorful-Posts Parijat-K/manomita-portfolio Kajaljain22/Language-Translator olmesm/ipsum-cli shivamchawda/Emoji-Encoder megancoyle/yoda simransrivastava01/VoiceToText prompt-cash/integration-examples francisconroy/printerclock telatin/covtobed guanguans/graph-bed JuanCasado/COMPUTACION_UBICUA josedpedroso/marlin-z-offset-finder 全部项目