For shrimp, whisk together coconut milk, lime juice, brown sugar, garlic and fish sauce in a small bowl. Transfer 1/3 cup coconut sauce to a large bowl and add shrimp. Cover with plastic wrap and refrigerate for at least 2 hours and up to 6 hours. Cover remaining coconut sauce and refrigerate.
For rice, heat oil in a medium sauté pan over medium heat until almost smoking. Add onions and cook, stirring occasionally, until softened, 5 to 7 minutes. Add rice and salt and cook, stirring occasionally, for 1 minute. Stir in stock and ginger. Bring to a soft boil, reduce heat to low and cover. Cook until almost all the liquid has been absorbed, about 20 minutes. Remove from heat and let stand for 10 minutes. Gently stir in cilantro.
Meanwhile, preheat a well-oiled grill to medium-high. Place shrimp on skewers, about 5 to a skewer. Place shrimp and asparagus on the grill. Grill asparagus, turning until all sides have grill marks and asparagus is tender, 3 to 5 minutes. Grill shrimp, turning once, until shrimp is cooked through and opaque, 2 minutes per side.
Place reserved coconut sauce in a small saucepan and warm over medium heat. Divide rice between 4 plates. Arrange shrimp and asparagus on top and drizzle each dish with 1 tbsp. coconut sauce. Garnish with chopped cilantro.
Prep time: 20 to 25 minutes
Marinate time: 2 to 6 hours
Cook time: 30 minutes