init-admin-policy.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/bash
  2. # 初始化系统管理员策略
  3. # Initialize system administrator policy
  4. set -e
  5. # 加载数据库配置
  6. if [ -f "../.env.local" ]; then
  7. source ../.env.local
  8. elif [ -f ".env.local" ]; then
  9. source .env.local
  10. fi
  11. DB_HOST=${DB_HOST:-localhost}
  12. DB_PORT=${DB_PORT:-3306}
  13. DB_USER=${DB_USER:-root}
  14. DB_PASSWORD=${DB_PASSWORD}
  15. DB_NAME="yunioncloud"
  16. echo "=== 初始化系统管理员策略 ==="
  17. # 检查策略是否已存在
  18. POLICY_COUNT=$(mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASSWORD $DB_NAME -sN -e "SELECT COUNT(*) FROM policy WHERE name='system-admin-allow-all';")
  19. if [ "$POLICY_COUNT" -gt 0 ]; then
  20. echo "✓ 系统管理员策略已存在"
  21. exit 0
  22. fi
  23. echo "创建系统管理员策略..."
  24. # 创建策略SQL
  25. mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASSWORD $DB_NAME << 'EOF'
  26. -- 生成策略ID
  27. SET @policy_id = REPLACE(UUID(), '-', '');
  28. SET @admin_role_id = 'f86e3d4191ae4a6283fc9a9d6b65fe6f';
  29. SET @system_project_id = 'cb66410213744b9a857376e529797a18';
  30. -- 插入策略
  31. INSERT INTO policy (
  32. id,
  33. name,
  34. type,
  35. description,
  36. enabled,
  37. scope,
  38. is_public,
  39. public_scope,
  40. domain_id,
  41. is_system,
  42. `blob`,
  43. created_at,
  44. updated_at,
  45. update_version,
  46. deleted
  47. ) VALUES (
  48. @policy_id,
  49. 'system-admin-allow-all',
  50. 'system-admin-allow-all',
  51. 'System administrator policy - allows all operations',
  52. 1,
  53. 'system',
  54. 1,
  55. 'system',
  56. 'default',
  57. 1,
  58. '{"policy":{"*":{"*":{"*":"allow"}}}}',
  59. NOW(),
  60. NOW(),
  61. 0,
  62. 0
  63. );
  64. -- 绑定策略到admin角色和system项目
  65. INSERT INTO rolepolicy_tbl (
  66. role_id,
  67. project_id,
  68. policy_id,
  69. auth,
  70. created_at,
  71. updated_at,
  72. update_version,
  73. deleted
  74. ) VALUES (
  75. @admin_role_id,
  76. @system_project_id,
  77. @policy_id,
  78. 1,
  79. NOW(),
  80. NOW(),
  81. 0,
  82. 0
  83. );
  84. -- 启用sysadmin用户的web控制台访问
  85. UPDATE user SET allow_web_console = 1 WHERE name = 'sysadmin';
  86. SELECT 'Policy created and bound successfully' as status;
  87. EOF
  88. echo "✓ 系统管理员策略创建成功"
  89. echo ""
  90. echo "策略详情:"
  91. echo " - 名称: system-admin-allow-all"
  92. echo " - 范围: system"
  93. echo " - 权限: 允许所有操作 (*/*/*)"
  94. echo " - 绑定: admin角色 + system项目"
  95. echo " - Web访问: 已启用"